ASP.net中的数据库应用

6.3CommandDataReader

6.3.1查询数据库(Command类) 两种方式创建Command对象

(1)使用Command的构造函数,如:

SqlCommand cmd=new sqlcommand("select * from Student",conn);

其中connconnection对象,在Web.config中创建。

(2)使用ConnectionCreatCommand()方法,如:

sqlcommand cmd=conn.CreatCommnad(); cmd.CommandText="Select * from Customers";

创建了Command对象以后可以使用一系列的Execute方法来执行命令语句。根据返回值不同,细分为ExecuteReader(),ExecuteScalar(),ExecuteNonQuery

 

1.ExecuteReader()方法,用法如:

String strConn=ConfirguratManager.ConnectionString["connectionString"].ConnectionString;

sqlconnection conn=new sqlconnection(strConn);

conn.Open();

sqlCommand cmd=new sqlcommand("Select * from Student",conn); //执行ExecuteReader()方法 sqlDataReader dr=cmd.ExecuteReader(); //DataReader对象绑定到DataGrid控件 dgCust.DataSource=dr; dgCust.DataBind();

conn.Close; //关闭连接

 

2.ExecuteScallar()方法,返回单个值。

String strConn=ConfirguratManager.ConnectionString["connectionString"].ConnectionString; sqlconnection conn=new sqlconnection(strConn); conn.Open();

String s="Select top 1 age from Student Where name=王丽";

sqlCommand cmd=new sqlCommand(s,conn);

String d=(string)cmd.ExecuteScalar();

Message.Text=d.ToSting();

conn.Close;

 

3.ExecuteNonQuery()方法,用法如删除数据,更新数据

String strConn=ConfirguratManager.ConnectionString["connectionString"].ConnectionString; sqlconnection conn=new sqlconnection(strConn);

conn.Open();

String d="delete * from Student Where name=王丽";

String s="Selet * from Student";

Sqlcommand cmd=new sqlCommand(d,conn);

cmd.ExecuteNonQuery();//执行SQl语句,删除姓名为王丽的同学,该操作不返回任何值。

SqlCommand cmd=new SqlCommand(s,conn);

cmd.ExecuteReader();

6.3.2读取数据库查询结果(DataReader对象)

Connection对象和Command对象从数据库连接并交互后,有两种方法来访问获取的结果。 (1)使用DataReader对象,用来逐行从数据源中获取数据并处理;节省内存可提高应用程序性能。减轻服务器对内存的需求。 (2)使用DataSet对象,用来将数据存到内存中进行处理; DataReader对象的创建可以概括为 String strConn=ConfirguratManager.ConnectionString["connectionString"].ConnectionString; sqlconnection conn=new sqlconnection(strConn);

conn.Open();

sqlcommand s="Select * from Student";

sqlDataReader dr=s.ExecuteReader();

DataReader对象创建以后,程序员就可以使用其Read方法从查询结果中获得一个结果集,一个结果集对应一行数据。(1)另外Read方法还会返回一个bool值,返回True表示仍有记录未读取,返回false表示已经到结果集的最好一条数据。(2)读取记录后,接下来的任务变为获取每个记录的某个字段,程序员可以字段名或者字段的引用来获取此记录中的某些字段。但DataReader提供了一种更为高效的查询字段的方法-Get方法。如下:

第一步,打开到数据库的连接,略;

String s="select * from Student";

sqlCommand cmd=new SqlCommand(s,conn);

sqlDataReader dr=cmd.ExecuteReader(); //通过DataReaderRead方法一次读取sql记录。

while (dr.Read())

 { Message.Text=Message.Text+"|"+dr.GetString(0); }

conn.Close; //关闭连接

 

有些数据提供者允许一个查询声明中包含多个命令(SQL语句的存储过程)。以便产生多个结果集,对于多个结果集,可以调用DataReader对象的NextResult方法来获得下一个结果集。如果该方法的返回值为false,则表明已经到达最后一个结果集。如:

第一步,打开到数据库的连接,略;

String s1=”Select * from Student”;

String s2=”Select * from Customs”;

Sqlcommand cmd=new sqlcommand(s1+s2,conn);

SqlDataReader dr=cmd.ExecuteReader();

Do

{

   While(dr.read())

   {

   Object[] cols=new object[2];

   Int n=dr.GetValue(cols);

   Message.Text=Message.Text+”/”+dr[0].ToString();

}

Message.Text=Message.Text+”***”;

}

While (dr.nextResule());

dr.Close;

conn.Close;

程序允许结果为。第一个结果集***第二个结果集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值