ADO.NET连接到数据源的两种方法

连接到数据源指的是连到具体数据库文件中的一个表中的数据,通常有两种方法:

一、 是使用 DataAdapter+DataSet 对象 ;

二、是使用Command对象和DataReader对象。

1、两种方法的区别

(1)DataAdapter类表示一组数据命令和一个数据库连接,它们用于填充DataSet和更新数据源,因此更适用于经常更改数据库而不想经常写SQL命令的情况。

格式

 stringstrSQL = "SELECT * FROM 表名";

 SqlConnectionmyConn = new SqlConnection(strConn);

 myConn.Open();

 DataAdaptermyDataAdapter = new DbDataAdapter(strSQL, myConn);

(2)Command对象更适合应用于直接针对数据库发布SQL语句而不使用DataSet的情况,即使用Command对象效率更高,因为它直接发送SQL命令。 

格式

stringstrSQL = "SELECT * FROM 表名";

SqlConnection myConn = new SqlConnection(strConn);

myConn.Open();

SqlCommandmyComm = new SqlCommand(strSQL, myConn);

 ...

myConn.close();

2、从数据源读取数据

(1)使用DataReader+Command对象

当使用ConnectionCommand对象链接到数据源,利用命令进行查询后就可以使用DataReader读取返回的结果

DataReader的实例化问题

不能直接实例化DataReader类;而是通过执行Command对象的ExecuteReader()返回它的实例

下列方式是错误的:

SqlDataReadermyDataReader=new SqlDataReader()

SqlDataReadermyDataReader=myCommand.ExecuteReader();

实例:

using System;

using System.Collections.Generic;

using System.linq;

using System.Text;

using System.Data.SqlClient;   //引入ADO.NET程序集

using System.Data; 

namespace ConsoleApplication1

{

   class Program

  {

      static void Main(string[] args)

     { 

       //1创建数据库连接对象

         string strSQL="Sever=.;Database=Students;Integrated Security=True";  //windows模式连接

         SqlConnection conn=new SqlConnection(strSQL);  //实例化

         SqlCommand myCom=conn.CreateCommand();

         ADOCRUDByCommand(conn,myCom);   //通过SqlCommod对象实现数据的CRUD

     }

    private static void ADOCRUDByCommand(SqlConnection conn,SqlCommand myCom)

    {

        try      //引用try-catch语句

       {

            conn.Open();  //打开数据库

            //2从数据库中读取数据

      string sql="select*from Students Where Name=@Name";  //string.Format("select*from where Name='{0}',name")

      myCom.CommandText=sql;

      myCom.Parameters.Add("@Name",SqlDbType.VarChar).Value="jf";   //新增数据

      SqlDataReader myReader =myCom.ExecuteReader();  //用ExcuteReader方法尽可能快地对数据库进行查询并得到结果

      while(myReader.Read())  //判断是否有数据

     {

             string ID = myReader["ID"].ToString();

             string StudentNo = myReader["StudentNo"].ToString();

             string Name = myReader["Name"].ToString();

             Console.WriteLine("{0},{1},{2}",ID,StudentNo,Name);

     }

   }

   catch(Exception ex)

  {

      Console.WriteLine(ex.Message);

  }

 finally

{

      conn.Close();  //关闭数据库

       Console.ReadLine();

 }

  }

}

(2)使用DataSet+DataAdapter对象       

使用DataSet对象时一般是调用DataAdapterFill()方法来填充数据到DataSet对象,然后读取数据。

例如:

DataSetMyDataSet = new DataSet( );

  MyDataAdapter.Fill(MyDataSet,”TableName”);

实例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            //1连接数据库对象
            string strConn = "server=(local);database=news;trusted_connection=true";
            string strSQL= "SELECT * FROM 表1";
            DataSet myDataSet = new DataSet();//
            SqlConnection myConn = new SqlConnection(strConn);
            myConn.Open();
            //2调用DataAdapter的Fill()方法来填充数据到DataSet对象
            SqlDataAdapter myDataAdapter = new SqlDataAdapter(strSQL, myConn);
            myDataAdapter.Fill(myDataSet, "table1");
            foreach (DataTable table in myDataSet.Tables)
            {
                foreach (DataRow row in table.Rows)
                {
                    foreach (object field in row.ItemArray)
                    {
                        Console.Write(field);
                    }
                    //相应的行处理
                }
                //相应的表处理
            }
        }
    }
}

      














  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值