目錄
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 語句來更新數據庫中的值
實例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 }
簡單實例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 }