c#操作mysql 执行语句_c# 数据库编程(通过SqlCommand 执行DML语句)
原來一直是java,python等語言,最近用c#語言,并編寫數據庫訪問代碼。使用了之后,這里總結下,分享下c#如何操作數據庫。
在java等其它語言中,有一套標準的api來完成數據庫訪問,并且一般都是通過sql語句來訪問的。而在c#中,提供了多種靈活的方式。
大致可以分為:
1)和其它語言一樣,直接利用sql命令(包括存儲過程)操作數據庫
2)利用sql語句,同時結合DataSet、DataAdapter等Api,提高使用的效率
3)與gui程序結合,與DataGridView等可視化組件結合。
本文介紹第一種方式。對于第一種方式,主要分為更新語句和查詢語句,需要考慮的有:
1)單條和批量更新語句的執行
2)參數綁定
3)事務處理
.........
下面我們按照常用的使用場景一 一來介紹。
一、更新操作(單條語句)
直接上代碼
usingSystem;usingSystem.Data;usingSystem.Data.SqlClient;namespaceDbExample
{classDbActor
{public voidupdateDb()
{
SqlConnection conn=getConnection();try{
conn.Open();
SqlCommand command= new SqlCommand("insert userinfo values('aaa','bb')", conn);int re =command.ExecuteNonQuery();if (re == 1)
{
System.Console.WriteLine("inset success");
}else{
System.Console.WriteLine("inset error");
}
}catch(Exception ex)
{
System.Console.WriteLine(ex.Message);
}finally{
conn.Close();
}
}privateSqlConnection getConnection()
{string strConnection = @"Data Source = localhost\SQLEXPRESS; Initial Catalog = mydb; User Id = sa; Password = 12345678;";
SqlConnection conn= newSqlConnection(strConnection);returnconn;
}
}
}
需要注意幾點:
1)數據庫鏈接是資源,使用完需要釋放。這在所有其它語言的數據庫訪問中都是這樣的。
2)c#比較討厭的是,它針對不同的數據庫,有不同的數據訪問對象(類名不同,所在的命名空間不同),這里的api都是Sqlxxxxx,以Sql打頭的api是訪問sql server數據庫的api。這點在使用時需要注意。
3)ExecuteNonQuery 方法的返回值是執行sql命令后影響的記錄的條數。
二、參數綁定
執行sql命令,最基本的就是拼湊一個完整的sql語句執行。但更常用的做法是進行參數傳遞的方式,這樣可以有效利用數據庫的特性,提高同類sql語句(sql命令一樣,只是命令的值不同)的執行效率。舉例代碼如下:
public voidupdateDbByPara()
{
SqlConnection conn=getConnection();try{
conn.Open();
SqlCommand command= new SqlCommand("insert userinfo values(@name,@pass)", conn);
command.Parameters.Add(new SqlParameter("@name","x1"));
command.Parameters.Add(new SqlParameter("@pass", "123"));
command.ExecuteNonQuery();
}catch(Exception ex)
{
System.Console.WriteLine(ex.Message);
}finally{
conn.Close();
}
}
注意:sql語句中的? @參數名? 不能用引號括起來,否則就當作字符串值了。
三、事務
當同時執行多條dml語句時,需要考慮在一個事務中執行。下面給出一個例子:
public voidupdateDbByTrans()
{
SqlConnection conn=getConnection();
SqlTransaction trans= null;try{
conn.Open();
trans=conn.BeginTransaction();
SqlCommand command= new SqlCommand("insert userinfo values(@name,@pass)", conn,trans);
command.Parameters.Add(new SqlParameter("@name", "x5"));
command.Parameters.Add(new SqlParameter("@pass", "123"));
command.ExecuteNonQuery();
command.Parameters.Clear();
command.Parameters.Add(new SqlParameter("@name", "x4"));
command.Parameters.Add(new SqlParameter("@pass", "123"));
command.ExecuteNonQuery();
trans.Commit();
}catch(Exception ex)
{
MessageBox.Show(ex.Message);try{
trans.Rollback();
}catch{ }
}finally{
conn.Close();
}
}
上面執行了兩個sql語句,如果第一個語句成功,但第2個語句失敗,因為在一個事務中,第一個語句也不會生效。
本文介紹了如何直接利用sql語句進行數據庫的更新操作,下面的文章會接著進行數據庫查詢等操作的介紹。
總結
以上是生活随笔為你收集整理的c#操作mysql 执行语句_c# 数据库编程(通过SqlCommand 执行DML语句)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python装饰器副作用_对Python
- 下一篇: java中如何确定是数字_java中怎么