首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络办公
使用ADO.NET轻松操纵数据库-.NET教程,数据库应用
作者:网友供稿 点击:18
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
使用ado.net轻松操纵数据库
ado.net提供了connection来连接数据库,同时也提供了command对象来查询数据库。同connection对象一样,command也有两种:oledbcommand和sqlcommand.其区别同connection对象。

  要操纵数据库,必须先使用connection来连接到数据库,再创建一个command来查询。有几种创建方式,例:

sqlcommand cmd;

string strcon="server=localhost;database=northwind;trusted_connection=yes;";
string strqry="select * from categories";
sqlconnection con=new sqlconnection(strcon);
con.open();
¹cmd=con.createcommand(); //这里使用用connection对象的createcommand方法来创建一个command对象。
cmd.commandtext=strqry;
// sqldatareader reader=cmd.executereader();

² cmd=new sqlcommand(); //直接使用new 关键字来创建
cmd.commandtext=strqry;
cmd.connection=con; //设置与数据库的连接

 ³cmd=new sqlcommand(strqry,con); //直接在new的时候带两个参数来创建


 执行方式:

(主要有这么几种,cmd.executereader();cmd.executenonquery();cmd.executescalar();cmd.executexmlreader();)

 1,executereader();返回一个sqldatareader对象或oledbdatareader对象,这个看你的程序的需要去  做。可以通过这个对象来检查查询结果,它提供了“游水”式的执行方式,即从结果中读取一行之后,移动到另一行,则前一行就无法再用。有一点要注意的是执行之后,要等到手动去调用read()方法之后,datareader对象才会移动到结果集的第一行,同时此方法也返回一个bool值,表明下一行是否可用,返回true则可用,返回false则到达结果集末尾。

使用datareader可以提高执行效率,有两种方式可以提高代码的性能:一种是基于序号的查找,一个是使用适当的get方法来查找。因为查询出来的结果一般都不会改变,除非再次改动查询语句,因此可以通过定位列的位置来查找记录。用这种方法有一个问题,就是可能知道一列的名称而不知道其所在的位置,这个问题的解决方案是通过调用datareader 对象的getordinal()方法,此方法接收一个列名并返回此列名所在的列号。例:

int id=reader.getordinal("categoryname");
while(reader.read())
{
response.write(reader[id]);
}
reader.close();

至于第二种方式很直观,例:

 while(reader.read())
{
   response.write(reader.getint32(0).tostring()+" "+reader.getstring(1).tostring()+" <br>");
}

 datareader的getint32()和getstring()通过接收一个列号来返回一个列的值,这两种是最常用的,其中  还有很多其它的类型。

(注:datareader对象在调用close()方法即关闭与数据库的连接,如果在没有关闭之前又重新打开第二个连接,则会产生一条异常信息)

 2.,executenonquery() 这个方法并不返回一个datareader对象,而是返回一个int类型的值,即在执行之后在数据库中所影响的行数。

 例:

 int affectrows=cmd.executenonquery();
response.write(affectrows +" 条记录受影响");

3,executescalar() 这个方法不接受任何参数,仅仅返回查询结果集中的第一行第一列,而忽略了其它的行和列,而且返回的是一个object类型,在使用之前必须先将它强制转换为所需类型。如果返回的仅仅是一个单独的数据元,则可以使用此方法来提高代码的性能。例:

string strcon="server=localhost;database=northwind;trusted_connection=yes;";
string strqry="select count(*) from categories";
sqlconnection con=new sqlconnection(strcon);
con.open();
sqlcommand cmd=con.createcommand();
int i=convert.toint32(cmd.executescalar()); //必须强制转换

 4,executexmlreader() 此方法用于xml操作,返回一个xmlreader对象,由于系统默认没有引用 system.xml名空间,因此在使用前必须前引入。例:

string strcon="server=localhost;database=northwind;trusted_connection=yes;";
sqlconnection con=new sqlconnection(strcon);
con.open();
sqlcommand cmd = new sqlcommand("select * from categories for xml auto, xmldata", con);
xmlreader xr=cmd.executexmlreader();
response.write(xr.attributecount);  //这里获取当前节点上的属性个数

xr.close();

 执行完毕之后,照样要显式地调用close()方法,否则会抛出异常。

 使用参数化的查询

  先看一段sql语句:select categoryid,description from categories where categoryid=? 其中的问号就是一个参数。但在使用的时候必须是带有@前缀的命名参数,因为.net数据提供程序不支持这个通用的参数标记“?”.使用参数化的查询可以大大地简化编程,而且执行效率也比直接查询字符串要高,也更方便,很多情况下都需要更改查询字符串,这种方式就提供了方便,只需更改参数的值即可。例:

 string strcon="server=localhost;database=northwind;trusted_connection=yes;";
sqlconnection con=new sqlconnection(strcon);
con.open();
string strqry="select * from categories where categoryid=@categoryid"; //带参数的查询
sqlcommand cmd=new sqlcommand(strqry,con);
cmd.parameters.add("@categoryid",sqldbtype.int,4); //给参数赋于同数据库中相同的类型
cmd.parameters["@categoryid"].value="3"; //给参数赋值,可灵活改变
sqldatareader r=cmd.executereader(); 
while(r.read())
{
response.write(r.getstring(2)+"<br>"); //取出指定参数列的值
}
con.close(); //切记关闭

 使用存储过程进行查询


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·JSP+JAVABEAN+SERVLET开发环境配置指南-JSP教程,Jsp/Servlet
·.net中webform和winform连接sql server 2000数据库的c#操作类-.NET教程,数据库应用
·C#中调用Windows API的要点-.NET教程,C#语言
·将.net组件注册为com组件-.NET教程,组件控件开发
·php上传、管理照片示例-PHP教程,PHP应用
·对通信电源维护管理工作的几点考虑——李晓明
·用c#写的贪吃蛇游戏,简简单单-.NET教程,C#语言
·java连接oracle,取io文件内容,子串替换-JSP教程,Java技巧及代码
·CASSINI源代码分析(1)-.NET教程,面向对象编程
·转换DataSet到普通xml的新法-.NET教程,数据库应用
最新文章
·office工具栏的配置管理与重置操作_办公软件教程
·word 2007表格简单计算和数字格式转换_word教程
·重命名office工具栏、菜单和菜单命令_办公软件教程
·移动或复制office按钮、菜单或菜单命令_办公软件教程
·word2007中快速插入固定内容的技巧_word教程
·修改word默认设置 让它用起来更顺手_word教程
·office文字快速录入技巧_办公软件教程
·编辑office菜单或按钮的键盘加速键_办公软件教程
·用excel 2007制作能互动的函数图像_excel教程
·将超链接分配给工具栏按钮或菜单命令_办公软件教程
相关主题
  • 使用ado.net2.0提升数据交互性能(5)_ado.net应用
  • 使用ado.net2.0提升数据交互性能(4)_ado.net应用
  • 使用ado.net2.0提升数据交互性能(3)_ado.net应用
  • 使用ado.net2.0提升数据交互性能(2)_ado.net应用
  • 使用ado.net2.0提升数据交互性能(1) _ado.net应用
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭