C#操作MYSQL數據庫


目錄

1、准備步驟

2、MYSQL操作流程

3、MYSQL的C#中的類

4、簡單實例

總結:可以把對數據庫的操作寫成一個個的函數,寫到一個helpsql類中,到時候使用的時候就可以直接調用,MYSQL和SQL SERVER 操作是一樣的,只不過就是MYSQL要自己下載API 接口,SQL SERVER 不用下載,其他的操作都是一樣的。花了一個的時間寫,寫博客真是累啊,寫博客要趁熱打鐵,昨晚項目后要馬上開始記錄,不要拖,不然就當時候忘了又要重新開始。還有碰的很好的博客,可以轉載過來當做資料開看,應該要對照着他的思路,自己做一遍,而不是看懂就行了,知易行難啊!!!!


 

1、准備步驟

 

1.網上下載MySql.Data.dll

2.在項目當中添加引用MySql.Data.dll

3.在操作類當中添加:

  using MySql.Data;

  using MySql.Data.MySqlClient;

 


2、MYSQL操作流程 

第一步:使用SqlConnection對象連接數據庫

第二步:建立SqlCommand對象,執行SQL語句

第三步:對SQL語句執行后的結果進行操作

對返回的結果分為兩類

  一、用SqlDataReader直接一行一行的讀取數據集;

     二、DataSet聯合DataAdapter來操作數據庫

 


 

3、MYSQL的C#中的類

1、SqlConnection類

  構造函數:SqlConnection(connstr);

  屬性:  Database//獲取當前數據庫或連接打開后要使用的數據庫的名稱

       Connectionstring//獲取或設置用於打開 SQL Server 數據庫的字符串

  方法:  Open()

       Close()

         Dispose()//釋放所有資源

       
2、SqlCommand類
  

   構造函數:SqlCommand(string,conn)

       屬性:  CommandType//獲取或設置一個值,該值指示如何解釋 CommandText 屬

        CommandText //獲取或設置要對數據源執行SQL 語句

        Connection//獲取或設置 SqlCommand 的此實例使用的 SqlConnection

        Parameters//獲取 SqlParameterCollection。參數集合

       方法:  ExecuteNonQuery(): 返回受影響函數,如增、刪、改操作;

         ExecuteScalar():執行查詢,返回首行首列的結果;

        ExecuteReader():返回一個數據流(SqlDataReader對象)。

 

  實例1:

     SqlCommand cmd = new  SqlCommand ()

     cmd.connection =conn;

     cmd.CommandType = CommandType.Text;

     cmd.CommandText ="select *from produce=@ID";

     cmd.Parameters.Add("@ID",SqlDBType.NVarChar,10,ID).values=1;

     cmd.ExecuteScalar();

  實例2:

  SqlCommand cmd = new  SqlCommand (“select *from test”,conn);

  cmd.ExecuteScalar();

 

注意:  ExecuteNonQuery()方法主要用戶更新數據,通常它使用Update,Insert,Delete語句來操作數據庫,其方法返回值意義:對於 Update,Insert,Delete  語句 執行成功是返回值為該命令所影響的行數,如果影響的行數為0時返回的值為0,如果數據操作回滾得話返回值為-1,對於這種更新操作 用我們平時所用的是否大於0的判斷操作應該沒有問題而且比較好,但是對於其他的操作如對數據庫結構的操作,如果操作成功時返回的卻是-1,這種情況跟我們平時的思維方式有點差距所以應該好好的注意了,

 

 3、SqlDataReader類

  是由ExecuteReader()返回一個數據流(SqlDataReader對象)沒有構造方法

  屬性:Connection//獲取與 SqlDataReader 關聯的 SqlConnection

     FieldCount//獲取當前行中的列數。

     HasRows//獲取一個值,該值指示 SqlDataReader 是否包含一行或多行

       RecordsAffect//獲取執行 Transact-SQL 語句所更改、插入或刪除的行數

  方法:Read();//使 SqlDataReader 前進到下一條記錄

     GetType();//獲取當前實例的 Type

     NextResult();//當讀取批處理 Transact-SQL 語句的結果時,使數據讀取器前進到下一個結果

 

4、SqlDataApater類

  構造方法:SqlDataApater()

       SqlDataAdapter(SqlCommand)//初始化 SqlDataAdapter 類的新實例,用指定的 SqlCommand 作為 SelectCommand 的屬性。

       SqlDataApater(string,conn)//使用 SelectCommand 和 SqlConnection 對象初始化 SqlDataAdapter 類的一個新實例

  屬性:  DeleteCommand

       SelectCommand

         InsertCommand

       UpdataCommand           

  方法:    Fill(DataSet)//在 DataSet 中添加或刷新行

         Fill(DataTable)//在 DataSet 的指定范圍中添加或刷新行,以與使用 DataTable 名稱的數據源中的行匹配。 (繼承自DbDataAdapter

       Update(DataRow[])//通過為 DataSet 中的指定數組中的每個已插入、已更新或已刪除的行執行相應的 INSERT、UPDATE 或 DELETE 語句來更新數據庫中的值

       Update(DataSet)//通過為指定的 DataTable 中的每個已插入、已更新或已刪除的行執行相應的 INSERT、UPDATE 或 DELETE 語句來更新數據庫中的值

       Update(DataTable)

 

    實例1

  // 隱藏了SqlCommand對象的定義,同時隱藏了SqlCommand對象與SqlDataAdapter對象的綁定

     SqlDataAdapter  myda= new  SqlDataAdapter("select * from test",conn);

  實例2

  SqlCommand mySqlCommand = new SqlCommand();// 創建SqlCommand

  mySqlCommand.CommandType = CommandType.Text;

  mySqlCommand.CommandText = "select * from product";

  mySqlCommand.Connection = sqlCnt;

 

  SqlDataAdapter myDataAdapter = new SqlDataAdapter();   // 創建SqlDataAdapter

    myDataAdapter.SelectCommand = mySqlCommand; // 為SqlDataAdapter對象綁定所要執行的SqlCommand對象

5、DataSet類  

  命名空間:System.Data.DataSet。

  數據集,本地微型數據庫,可以存儲多張表。

 //使用DataSet第一步就是將SqlDataAdapter返回的數據集(表)填充到Dataset對象中:  

SqlDataAdapter myDataAdapter = new SqlDataAdapter("select * from product", sqlCnt);
DataSet myDataSet = new DataSet();        // 創建DataSet
myDataAdapter.Fill(myDataSet, "product");    // 將返回的數據集作為“表”填入DataSet中,表名可以與數據庫真實的表名不同,並不影響后續的增、刪、改等操作

//訪問dataset中的數據
DataTable myTable = myDataSet.Tables["product"];
foreach (DataRow myRow in myTable.Rows) {
    foreach (DataColumn myColumn in myTable.Columns) {
        Console.WriteLine(myRow[myColumn]);    //遍歷表中的每個單元格
    }
}

// 修改DataSet
DataTable myTable = myDataSet.Tables["product"];
foreach (DataRow myRow in myTable.Rows) {
    myRow["name"] = myRow["name"] + "商品";
}

// 將DataSet的修改提交至“數據庫”
SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter);
myDataAdapter.Update(myDataSet, "product");

// 添加一行
DataRow myRow = myTable.NewRow();
myRow["name"] = "捷安特";
myRow["price"] = 13.2;
//myRow["id"] = 100; id若為“自動增長”,此處可以不設置,即便設置也無效
myTable.Rows.Add(myRow);

// 將DataSet的修改提交至“數據庫”
SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter);
myDataAdapter.Update(myDataSet, "product");

// 刪除第一行
DataTable myTable = myDataSet.Tables["product"];
myTable.Rows[0].Delete();

SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter);
myDataAdapter.Update(myDataSet, "product");

 

4、簡單的例子

簡單實例1:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using MySql.Data;
 6 using MySql.Data.MySqlClient;
 7 
 8 namespace mysqltest
 9 {
10     class Program
11     {
12         static void Main(string[] args)
13         {
14           string connstr = "Server=localhost;Uid=root;Pwd=mhl83905590;Database=yuangong";
15           using (MySqlConnection conn = new MySqlConnection(connstr))
16           {
17               try
18               {
19                   conn.Open();
20                   MySqlCommand cmd = new MySqlCommand("select * from yg_table", conn);
21                   MySqlDataReader reader = cmd.ExecuteReader();
22                   int j = reader.FieldCount;
23                   for (int i = 0; i < j; i++)
24                   {
25                       Console.Write(reader.GetName(i));
26                       Console.Write("\t");
27                   }
28                   Console.Write("\n");
29                   Console.Write(reader.GetType()+"\n");
30                   
31                   while (reader.Read())
32                   {
33                       if (reader.HasRows)
34                       {
35                           for (int i = 0; i < j; i++)
36                           {
37                               Console.Write(reader[i]);
38                               Console.Write("\t");
39 
40                           }
41                           Console.Write("\n");
42                       }
43                   }
44                   
45                   reader.Close();
46               }
47               catch (MySqlException ex)
48               {
49                   Console.Write(ex.ToString());
50 
51               }
52               finally
53               {
54                   conn.Close();
55               }
56  
57           }
58          
59         }
60     }
61 }
View Code


簡單實例2:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using MySql.Data;
  6 using MySql.Data.MySqlClient;
  7 using System.Data;
  8 
  9 namespace mysqltest
 10 {
 11     class Program
 12     {
 13         static void Main(string[] args)
 14         {
 15           string connstr = "Server=localhost;Uid=root;Pwd=mhl83905590;Database=yuangong";
 16           using (MySqlConnection conn = new MySqlConnection(connstr))
 17           {
 18               try
 19               {
 20                   conn.Open();
 21                   MySqlDataAdapter adapter = new MySqlDataAdapter("select * from yg_table", conn);
 22 
 23                   DataSet ds = new DataSet();
 24 
 25                   adapter.Fill(ds, "yg_table");
 26 
 27                   DataTable mytable = ds.Tables["yg_table"];
 28                   for (int i = 0; i < 5;i++ )
 29                       Console.Write(mytable.Columns[i].ColumnName+"\t");
 30                   Console.Write("\n");
 31 
 32                   foreach (DataRow myRow in mytable.Rows)
 33                   {
 34                       foreach (DataColumn myColumn in mytable.Columns)
 35                           Console.Write(myRow[myColumn]+"\t");
 36                       Console.Write("\n");
 37                   }
 38                   Console.Write(mytable.TableName+"\n");
 39 
 40                   //修改
 41                   //foreach (DataRow myRow in mytable.Rows)
 42                   //{
 43                   //    myRow["name"] = "小明";
 44                   //}
 45                   //MySqlCommandBuilder mycmdbuilder = new MySqlCommandBuilder(adapter);
 46                   //adapter.Update(ds, "yg_table");
 47 
 48                   //增加一行
 49                   //DataRow mynewRow = mytable.NewRow();
 50                   //mynewRow["id"] = 6;
 51                   //mynewRow["name"] = "小雷";
 52                   //mynewRow["sex"] = "女";
 53                   //mynewRow["age"] = 12;
 54                   //mynewRow["menoy"] = 12;
 55                   //mytable.Rows.Add(mynewRow);                
 56                   //MySqlCommandBuilder mycmdbuilder = new MySqlCommandBuilder(adapter);
 57                   //adapter.Update(ds, "yg_table");
 58 
 59                   //刪除一行
 60 
 61                   mytable.Rows[6].Delete();
 62                   MySqlCommandBuilder mycmdbuilder = new MySqlCommandBuilder(adapter);
 63                   adapter.Update(ds, "yg_table");
 64 
 65                   for (int i = 0; i < 5; i++)
 66                       Console.Write(mytable.Columns[i].ColumnName + "\t");
 67                   Console.Write("\n");
 68 
 69                   foreach (DataRow myRow in mytable.Rows)
 70                   {
 71                       foreach (DataColumn myColumn in mytable.Columns)
 72                           Console.Write(myRow[myColumn] + "\t");
 73                       Console.Write("\n");
 74                   }
 75                  
 76                   //MySqlCommand cmd = new MySqlCommand("select * from yg_table", conn);
 77                   //MySqlDataReader reader = cmd.ExecuteReader();
 78                   //int j = reader.FieldCount;
 79                   //for (int i = 0; i < j; i++)
 80                   //{
 81                   //    Console.Write(reader.GetName(i));
 82                   //    Console.Write("\t");
 83                   //}
 84                   //Console.Write("\n");
 85                   //Console.Write(reader.GetType()+"\n");
 86                   
 87                   //while (reader.Read())
 88                   //{
 89                   //    if (reader.HasRows)
 90                   //    {
 91                   //        for (int i = 0; i < j; i++)
 92                   //        {
 93                   //            Console.Write(reader[i]);
 94                   //            Console.Write("\t");
 95 
 96                   //        }
 97                   //        Console.Write("\n");
 98                   //    }
 99                   //}
100                   
101                   //reader.Close();
102               }
103               catch (MySqlException ex)
104               {
105                   Console.Write(ex.ToString());
106 
107               }
108               finally
109               {
110                   conn.Close();
111               }
112  
113           }
114          
115         }
116     }
117 }
View Code

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM