标签:
string connstr=Setting.Instance().GetConnectionString("MySql"); MySqlConnection conn =new MySqlConnection(connstr); conn.Open(); string query = "insert into myfirst(Id,Name) values(?Id,?Name)"; MySqlCommand cmd = new MySqlCommand(query, conn); MySqlParameter para1=new MySqlParameter("?Id",DbType.Int32); //这里要注意必须要用?号 MySqlParameter para2=new MySqlParameter("?Name",DbType.String);//这里要注意必须要用?号 para1.Value=5; para2.Value="ddd"; cmd.Parameters.Add(para1); cmd.Parameters.Add(para2); cmd.ExecuteNonQuery();
对于下列情况,要在应用程序中使用 DataReader:
•
不需要缓存数据。
•
要处理的结果集太大,内存中放不下。
•
一旦需要以只进、只读方式快速访问数据。
用多个表填充 DataSet,创建一个 DataTableMapping,把 "Customers1" 映射到 "Orders",并为其他后面的表创建其他的表映射。例如:
//C# SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customers; SELECT * FROM Orders;", myConnection); da.TableMappings.Add("Customers1", "Orders"); DataSet ds = new DataSet(); da.Fill(ds, "Customers");
ExecuteScalar 和 ExecuteNonQuery
如果想返回像 Count(*)、Sum(Price) 或 Avg(Quantity) 的结果那样的单值,可以使用 Command.ExecuteScalar。ExecuteScalar 返回第一行第一列的值,将结果集作为标量值返回。
使用不返回行的 SQL 语句时,例如修改数据(例如INSERT、UPDATE 或 DELETE)或仅返回输出参数或返回值,请使用 ExecuteNonQuery。
把 Null 作为参数值传递
对数据库的命令中,当把空值作为参数值发送时,不能使用 null。而需要使用 DBNull.Value。例如:
//C# SqlParameter param = new SqlParameter("@Name", SqlDbType.NVarChar, 20); param.Value = DBNull.Value;
当执行事务时,显式地在开始事务之前打开连接,并在提交之后关闭连接。例如:
//C# public void RunSqlTransaction(SqlDataAdapter da, SqlConnection myConnection, DataSet ds) { myConnection.Open(); SqlTransaction myTrans = myConnection.BeginTransaction(); myCommand.Transaction = myTrans; try { da.Update(ds); myCommand.Transaction.Commit(); Console.WriteLine("Update successful."); } catch(Exception e) { try { myTrans.Rollback(); } catch (SqlException ex) { if (myTrans.Connection != null) { Console.WriteLine("An exception of type " + ex.GetType() + " was encountered while attempting to roll back the transaction."); } } Console.WriteLine(e.ToString()); Console.WriteLine("Update failed."); } myConnection.Close(); }
在 C# 中使用 "Using" 语句
对于 C# 程序员来说,确保始终关闭 Connection 和 DataReader 对象的一个方便的方法就是使用 using 语句。using 语句在离开自己的作用范围时,会自动调用被“使用”的对象的 Dispose。例如:
//C# string connString = "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"; using (SqlConnection conn = new SqlConnection(connString)) { SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT CustomerId, CompanyName FROM Customers"; conn.Open(); using (SqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) Console.WriteLine("{0}\t{1}", dr.GetString(0), dr.GetString(1)); } }
string connStr = String.Format("server={0};user id={1}; password={2}; database={3}; pooling=false;port=3308", "localhost", "root", "", "test"); try { MySqlConnection myConn = new MySqlConnection(connStr); myConn.Open(); MySqlCommand cmd = myConn.CreateCommand(); cmd.Parameters.Add("?DocName", MySqlDbType.VarChar, 50); cmd.Parameters[0].Value = "test by code"; cmd.Parameters[0].SourceColumn = "DocName"; cmd.CommandText = "update t_docs set DocName=?DocName where DocId=4"; cmd.ExecuteNonQuery();
标签:
原文地址:http://www.cnblogs.com/step-city/p/5822967.html