首页 > 代码库 > ADO.NET学习

ADO.NET学习

  1. ADO.NET重要的类
  2. 在.NET访问MySql数据库时的几点经验!
    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=http://www.mamicode.com/5;para2.Value="ddd";cmd.Parameters.Add(para1);cmd.Parameters.Add(para2);cmd.ExecuteNonQuery();

     

  3. 设计应用程序时,要考虑应用程序所需功能的等级,以确定使用 DataSet 或者是 DataReader
    对于下列情况,要在应用程序中使用 DataReader:•    不需要缓存数据。•    要处理的结果集太大,内存中放不下。•    一旦需要以只进、只读方式快速访问数据。

     

  4. 用多个表填充 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");

     

  5. ExecuteScalar 和 ExecuteNonQuery

    如果想返回像 Count(*)、Sum(Price) 或 Avg(Quantity) 的结果那样的单值,可以使用 Command.ExecuteScalar。ExecuteScalar 返回第一行第一列的值,将结果集作为标量值返回。    使用不返回行的 SQL 语句时,例如修改数据(例如INSERT、UPDATE 或 DELETE)或仅返回输出参数或返回值,请使用 ExecuteNonQuery。

     

  6. 把 Null 作为参数值传递

    对数据库的命令中,当把空值作为参数值发送时,不能使用 null。而需要使用 DBNull.Value。例如:

    //C#SqlParameter param = new SqlParameter("@Name", SqlDbType.NVarChar, 20);param.Value = DBNull.Value;

     

  7. 当执行事务时,显式地在开始事务之前打开连接,并在提交之后关闭连接。例如:

    //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();}

     

  8. 在 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));  }}

     

  9.  下边的代码是使用MySQL Connector Net 的例子。注意:他的Parameter的前缀是“?”而不是“@”。这个问题比较特殊。CoreLab里面的Parameter的前缀就是“@”.
     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 = http://www.mamicode.com/"test by code";                cmd.Parameters[0].SourceColumn = "DocName";                cmd.CommandText = "update t_docs set DocName=?DocName where DocId=4";                cmd.ExecuteNonQuery();

     

  10. 知识经验分享来源

 

ADO.NET学习