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=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 = "test by code";
                    cmd.Parameters[0].SourceColumn = "DocName";
                    cmd.CommandText = "update t_docs set DocName=?DocName where DocId=4";
                    cmd.ExecuteNonQuery();
  10. 知识经验分享来源
时间: 2024-07-28 15:49:24

ADO.NET学习的相关文章

ADO.NET学习笔记之连接字符串

ADO.NET 2.0学习笔记之连接字符串 刚刚入门不久,想什么学习下dot net平台,就先从数据访问入手吧,从今天开始认真学习ado.net 2.0,为将来发展做好坚实基础. 连接字符串 SQL Client .net数据提供程序在连接到数据库时极其灵活,它提供了多种用以生成连接字符串的方式.可以使用关键字,例如“Data Sourse”.“Initial Catalog”,也可以使用"Server".“Database”等旧术语. 下面是两个例子,用于连接到SqlServer数据

ADO.NET 学习笔记 入门教程

本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=57&page=1&extra=#pid63 这是本人在学习ADP.NET过程中所作的笔记,可作为ADO.NET入门或者复习的教程. 连接字符串: DataSource=localhost; AttchDBFilename=|DataDirectory|\Database1.mdf; InitialCatalog=UserDate; Integrated Secu

ADO.NET 学习(一)

ADO.NET 主要包括Connection.Command.DataReader.DataSet和DataAdapter对象,具体介绍如下: Connection对象主要提供与数据库的链接功能. Command对象用于返回数据.修改数据.运行存储过程以及发送或检索参数信息的数据库命令. DataReader对象通过Command对象提供从数据库检索信息的功能.DataReader对象以一种只读的.向前的.快速的方式访问数据库. DataSet是ADO.NET的中心概念,是支持ADO.NET断开

C#-ado.net学习笔记-会有更新

ado.net 通用类对象.在本地内存暂存数据 托管类对象.让本地通用类对象连接数据库,让本地通用类对象和数据库同步 连接数据库 new connection(connectstring) command=newconnection.createcommand 用command或dataset类对象读取.添加.更新.删除数据 用datasetview或datatable.params类对象筛选数据 用table类对象保存读取xml文件

菜鸟学习Ado.net笔记一:Ado.net学习之SqlHelper类

1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.Data.SqlClient; 5 using System.Data; 6 using Microsoft.Win32; 7 8 namespace SqlHelp 9 { 10 /// <summary> 11 /// 定义SqlParameter所需的参数对象 12 /// </summary> 13

ADO.NET 学习(二)

今天主要学习使用Connection对象连接数据库 SQL Server .NET数据提供程序的链接对象是SqlConnection. 数据库连接字符串的常用参数及说明 Connection Timeout :在终止尝试并产生异常前,等待连接到服务器的连接时间长度(以秒为单位).默认值是15秒. Initial Catalog或DataBase :数据库的名称. Data Souse 或Server :连接打开时使用的SQL Server 名称,或者是Microsoft Access 数据库的文

ADO.NET学习系列(一)

一.ADO.NET基础 程序和数据库交互,要通过ADO.NET进行:通过ADO.NET就能在数据库中执行SQL了.ADO.NET中提供了对不同数据库的统一操作接口(ODBC).另外还有一种操作数据库的接口是JDBC. ADO.NET中通过SqlConnection类创建到SQL Server的链接,Sqlconnection代表一个数据库的链接,ADO.NET中的链接等资源都实现了IDisposable接口. 实现了IDisposable接口的对象,在使用完了,要进行资源的释放.调用Dispos

ADO.NET学习笔记-读写数据

1. DbCommand对象 要读写数据,一是需要有效的数据链接,二是需要DbCommand对象向数据源传递SQL命令.DbCommand对象包含的命令可以是DML数据操作语言,也可以是DDL数据定义语言.创建DbCommand的最好方式是先创建DbConnection,然后使用DbConnection的CreateCommand()方法,这样创建的DbCommand与DbConnection之间最为匹配.DbCommand必备的两个重要属性为CommandText和CommandType,示例

ADO.NET学习笔记-事务处理

1. 事务的定义 事务是指不可划分,必须同时执行的工作.如果组成事务的各项工作均得到执行,则事务执行成功,若其中一项未执行,则事务回滚至初始状态,执行失败.事务包含4个基本属性(ACID): 原子性(AUTOMICITY),不可划分为更小单元 一致性(CONSISTENCY),事务对外是一个整体 隔离性(ISOLATION),其内部对其他事务是不可见的 持久性(DURABILITY),当断电恢复时,未成功提交的事务将回滚至初始状态 2. 并发模型和数据库锁定事务的一致性和隔离性属性依靠数据库的锁