<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [C#]ADO訪問多數(shù)據(jù)庫的C#庫

      [C#]ADO訪問多數(shù)據(jù)庫的C#庫

      羅朝輝 (http://www.rzrgm.cn/kesalin/)

      本文遵循“署名-非商業(yè)用途-保持一致”創(chuàng)作公用協(xié)議

      一,C# Database 庫

      整了一個支持通過ADO方式訪問多種數(shù)據(jù)庫(OLE,MySQL,SQL Server,Oracle)的 C# 庫 Database。實現(xiàn)相當簡單,用工廠方法創(chuàng)建各種數(shù)據(jù)庫訪問的 wrapper 類即可。

      源碼下載:點此下載

      或訪問 Github:https://github.com/kesalin/CSharpSnippet/tree/master/Database

      類圖如下:

      IDatabase 是對外公開的接口類,其中定義了一堆操作數(shù)據(jù)庫的接口方法;
      DatabaseFactory 是窗口數(shù)據(jù)庫的工廠類;
      DatabaseType 是一個數(shù)據(jù)庫類型的枚舉;
      DatabaseHelper 封裝一些和數(shù)據(jù)庫相關的常用的小工具方法,如便捷地創(chuàng)建 connection string,從 dataset 中讀取值等。

      二,使用示例

      示例代碼如下:

      View Code
         internal class Program
          {
              private IDatabase _db;
              private const DatabaseType _dbType = DatabaseType.MySQL;
      
              #region Database related
      
              // You need to create a MySQL database named "sample" with columns 
              // id(int), Name(varchar(45)), Address(varchar(45)), Age(int) for this test.
              // 
              private void CreateDatabase()
              {
                  if (_db == null)
                  {
                      // Setup you database information here.
                      //
                      var connStr = DatabaseHelper.CreateConnectionString(_dbType, "localhost", "sample", "root", "123456");
                      _db = DatabaseFactory.CreateDatabase(_dbType, connStr);
      
                      if (_db == null)
                          Console.WriteLine(" >> Failed to create database with connection string {0}.", connStr);
                      else
                          Console.WriteLine(" >> Created database.");
                  }
              }
      
              private void CloseDatabase()
              {
                  if (_db != null)
                  {
                      _db.Dispose();
                      _db = null;
                  }    
              }
      
              public void TestInsert()
              {
                  if (_db == null)
                      return;
      
                  const string sqlCmd = "insert into customer (id, Name,Address,Age) values (0,'飄飄白云','上海張江高科',28)";
      
                  try
                  {
                      _db.Open();
                      _db.ExcuteSql(sqlCmd);
      
                      Console.WriteLine(" >> Succeed. {0}", sqlCmd);
                  }
                  catch (Exception ex)
                  {
                      Console.WriteLine(" >> Failed to {0}. {1}", sqlCmd, ex.Message);
                  }
                  finally
                  {
                      _db.Close();
                  }
              }
      
              public void TestFind()
              {
                  if (_db == null)
                      return;
      
                  const string sqlCmd = "select Name,Address,Age from customer where Name='飄飄白云'";
      
                  try
                  {
                      _db.Open();
                      var dataSet = _db.ExcuteSqlForDataSet(sqlCmd);
                      var recordCount = DatabaseHelper.GetRowCount(dataSet);
      
                      Console.WriteLine(" >> Excuted {0}", sqlCmd);
                      Console.WriteLine(" >> Found {0} record.", recordCount);
      
                      for (int i = 0; i < recordCount; i++)
                      {
                          var name = DatabaseHelper.GetValue(dataSet, i, 0) as string;
                          var address = DatabaseHelper.GetValue(dataSet, i, 1) as string;
                          var age = DatabaseHelper.GetIntValue(dataSet, i, 2);
      
                          Console.WriteLine("    >> Record {0}, Name:{1}, Address:{2}, Age:{3}", i + 1, name, address, age);
                      }
                  }
                  catch (Exception ex)
                  {
                      Console.WriteLine(" >> Failed to {0}. {1}", sqlCmd, ex.Message);
                  }
                  finally
                  {
                      _db.Close();
                  }
              }
      
              public void TestUpdate()
              {
                  if (_db == null)
                      return;
      
                  const string sqlCmd = "update customer set Address='張江高科' where Name='飄飄白云'";
      
                  try
                  {
                      _db.Open();
                      _db.ExcuteSql(sqlCmd);
      
                      Console.WriteLine(" >> Succeed. {0}", sqlCmd);
                  }
                  catch (Exception ex)
                  {
                      Console.WriteLine(" >> Failed to {0}. {1}", sqlCmd, ex.Message);
                  }
                  finally
                  {
                      _db.Close();
                  }
              }
      
              public void TestDelete()
              {
                  if (_db == null)
                      return;
      
                  const string sqlCmd = "delete from customer where Name='飄飄白云'";
      
                  try
                  {
                      _db.Open();
                      _db.ExcuteSql(sqlCmd);
      
                      Console.WriteLine(" >> Succeed. {0}", sqlCmd);
                  }
                  catch (Exception ex)
                  {
                      Console.WriteLine(" >> Failed to {0}. {1}", sqlCmd, ex.Message);
                  }
                  finally
                  {
                      _db.Close();
                  }
              }
      
              #endregion
      
              static void Main(string[] args)
              {
                  var runner = new Program();
      
                  runner.CreateDatabase();
      
                  runner.TestInsert();
                  runner.TestFind();
      
                  runner.TestUpdate();
                  runner.TestFind();
      
                  runner.TestDelete();
                  runner.TestFind();
      
                  runner.CloseDatabase();
      
                  Console.ReadLine();
              }
          }

      運行輸出結果:

       

      三,注意事項

      如果你對常用的數(shù)據(jù)庫命令語法還不太了解,可以參考如下鏈接:

      // SQL syntax
      //
      Select : http://en.wikipedia.org/wiki/Select_(SQL)
      Insert : http://en.wikipedia.org/wiki/Insert_(SQL)
      Delete : http://en.wikipedia.org/wiki/Delete_(SQL)
      Update : http://en.wikipedia.org/wiki/Update_(SQL)
      Truncate : http://en.wikipedia.org/wiki/Truncate_(SQL)

      由于各個數(shù)據(jù)庫廠商有不同的數(shù)據(jù)庫實現(xiàn),導致數(shù)據(jù)庫命令語法有一些細微的差別,因此需要特別注意。以下就列出一些常見的不同之處:

      1,最大查詢記錄數(shù)

      對于 SQL Server 使用 top 關鍵字。如:

      select top 100 * from customer

      對于 MySQL 使用 limit 關鍵字。如:

      select * from customer limit 100

      對于 Oracle 使用 rownum <=。如:

      select * from customer where rownum <= 100

      2,命令中出現(xiàn)的轉義字符(詳見 DatabaseHelper 類的 Validate 方法)

      對于 SQL Server,單引號 ' 要用兩個單引號 '' 替換;雙引號 " 要用兩個雙引號 "" 替換;

      對于 MySQL,單引號 ' 要用 \' 替換;反斜杠 \ 用于 \\ 替換。

       

      posted @ 2013-03-27 19:17  飄飄白云  閱讀(1013)  評論(2)    收藏  舉報
      本博客遵循 Creative Commons License “署名-非商業(yè)用途-保持一致”創(chuàng)作共用協(xié)議。 與我聯(lián)系
      主站蜘蛛池模板: 苍井空毛片精品久久久| 亚洲人成人一区二区三区| 国产精品美女一区二区三| 久久婷婷五月综合97色直播| 国产内射性高湖| 久久se精品一区二区三区| 日韩本精品一区二区三区| a级黑人大硬长爽猛出猛进| 成人精品视频一区二区三区| 双腿张开被5个男人调教电影| 午夜高清福利在线观看| 亚洲av日韩av永久无码电影| 亚洲熟女乱色一区二区三区| 高清自拍亚洲精品二区| 国内熟妇与亚洲洲熟妇妇| 亚洲综合色婷婷中文字幕| 高清国产av一区二区三区| 亚洲欧美日韩国产精品专区| 五常市| 女人被狂躁c到高潮喷水一区二区 女高中生自慰污污网站 | 国产日韩精品中文字幕| 日韩精品成人一区二区三区| 国产亚洲av日韩精品熟女| 亚洲综合在线日韩av| 婷婷久久综合九色综合88| 狠狠色噜噜狠狠狠狠2021| 免费人成视频x8x8国产| 国产永久免费高清在线| 日韩av在线一卡二卡三卡| 久久久久人妻精品一区三寸 | 男女啪啪高清无遮挡免费| 99久久精品国产一区二区蜜芽| 国产成人无码综合亚洲日韩| 亚洲禁精品一区二区三区| 高清中文字幕国产精品| 内射毛片内射国产夫妻| 国产96在线 | 亚洲| 一级女性全黄久久片免费| 亚洲人成电影网站 久久影视| 香蕉久久一区二区不卡无毒影院| 国产精品老熟女乱一区二区|