2012年2月7日 星期二

C# : 對 MySQL 新增、修改、刪除資料


對 MySQL 新增、修改、刪除資料都是使用 MySqlCommand 的 ExecuteNonQuery() 執行後回傳影響筆數,主要是送出的 MySQL 不同的差別而已。


//開啟連線
MySqlConnection conn = new MySqlConnection("server=127.0.0.1;user=root;database=test;port=3306;password=1111;");
conn.Open();

//在 test_table 資料表新增一筆資料
string sql = "INSERT INTO test_table ( `id` , `name`) VALUES ( '1' , 'testName')";
MySqlCommand cmd = new MySqlCommand(sql, conn);
int n = cmd.ExecuteNonQuery();

//列出新增的筆數
Console.WriteLine("共新增 {0} 筆資料" , n);

//將 test_table 資料表中 id 欄位值為 1 的資料,修改 name 欄位值為 testName2
string sql = "UPDATE test_table SET name='testName2' WHERE id='1'";
MySqlCommand cmd = new MySqlCommand(sql, conn);
int n = cmd.ExecuteNonQuery();

//列出被修改的筆數
Console.WriteLine("共修改 {0} 筆資料" , n);

//刪除 test_table 資料表中 id 欄位值為 1 的資料
string sql = "DELETE FROM test_table WHERE id='1'";
MySqlCommand cmd = new MySqlCommand(sql, conn);
int n = cmd.ExecuteNonQuery();

//列出被刪除的筆數
Console.WriteLine("共刪除 {0} 筆資料" , n);




另外我們設計資料庫結構時,時常會為資料表加個流水號的欄位(auto_increment),使新增資料時會自動產生下一個編號,雖然 Connector/Net 好像沒有提供查詢這個編號的方法,但在【C# : 對 MySQL 查詢資料】一文中提到可使用 MySqlCommand 的 ExecuteScalar() 直接查詢單筆資料的單一欄位結果值,所以善用 MySQL 語法也是可以取得最後新增編號是多少...

//開啟連線
MySqlConnection conn = new MySqlConnection("server=127.0.0.1;user=root;database=test;port=3306;password=1111;");
conn.Open();

//新增一筆資料
MySqlCommand cmd = new MySqlCommand("INSERT INTO test_table ( id , name) VALUES ( NULL , 'testName')" , conn);
cmd.ExecuteNonQuery();

//使用 MySQL 的函式查詢
cmd = new MySqlCommand("SELECT LAST_INSERT_ID()" , conn);
int n = (int)(long)cmd.ExecuteScalar();

//列出最新的流水號
Console.WriteLine("最後產生的 id = {0}" , n);