连接到数据源指的是连到具体数据库文件中的一个表中的数据,通常有两种方法:
二、是使用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对象
当使用Connection和Command对象链接到数据源,利用命令进行查询后就可以使用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对象时一般是调用DataAdapter的Fill()方法来填充数据到DataSet对象,然后读取数据。
例如:
DataSetMyDataSet = new DataSet( );
MyDataAdapter.Fill(MyDataSet,”TableName”);
实例: