欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

通过ADO.NET操作数据库

程序员文章站 2023-11-24 23:37:34
操作主要是执行命令和读取数据   1.连接   要访问数据库,首先要与数据库建立连接,在ado.net中是通过connection对象与数据库建立连接的   例如:建立...
操作主要是执行命令和读取数据

 

1.连接

 

要访问数据库,首先要与数据库建立连接,在ado.net中是通过connection对象与数据库建立连接的

 

例如:建立与sqlserver服务器上mycharge数据库连接的代码:

 

[html]  

dim cnstr as string="password=123456;persist security info=true;user id=sa;"&_  

"initialcatalog=mycharge;data source=192.168.24.60"  

dim cn assqlconnection =new sqlconnection ()  

cn.connectionstring=cnstr 'connectionstring 是connection对象最重要的一个属性,它用来指定与数据库建立连接时使用的连接串  

cn.open ()'打开连接  

 

既然代码中提到了连接串,那我们就来说说连接串,平常大家在建立与数据库连接时都要写那一大串连接串,其实书写起来也不麻烦(前提你比较熟悉而且细心),不过错一点也连不上啊,这时候我们可以选择下面的这种方法来获取连接串

 

1.新建一个文本文件,将其扩展名改为udl

2.双击你刚建好的文件,将打开“数据库连接属性”对话框

3.在“提供程序”选项卡选择某个提供者,这里我们选的是sql server,单击下一步按钮

通过ADO.NET操作数据库

4.在“连接”选项卡中输入数据库名称,用户名,密码等信息,单击“测试连接”按钮查看连接是否成功

通过ADO.NET操作数据库

5.如果成功的话,关闭此对话框,使用记事本再次打开该文件,其中就包含你想要的信息了

通过ADO.NET操作数据库

    

    注意:由于sqlserver对象是专门针对sqlserver数据库的,它的连接串中不允许指定provider属性,所以你不要激 动的把上面所有的信息都复制下来,那样是不对的,而要将provider=sqloledb.1去掉,只复制其后的内容就足够啦!对于其他数据提供程序的connection对象,如oledbconnection对象就不存在这个问题

 

2.命令

 

ado.net访问数据的基本方式

使用数据集

直接对数据库进行操作

 

如何使用数据集访问?

 

1.填充数据集

将外部数据源数据加载到数据集中(使用适配器)

 

什么是适配器

 适配器就好像是一座桥梁,用于数据源和数据集之间减缓数据,如图所示

 

通过ADO.NET操作数据库

使用适配器可以对数据进行增,删,改,查,分别为:

 

selectcommand:指定某命令对象以便从数据存储区检索行

insertcommand:指定某命令对象以便向数据存储区插入行

updatecommand:指定某命令对象以便修改数据存储区中的行

deletecommand:指定某命苦对象以便从数据存储区删除行

 

2.数据集更新

 

更新数据集中的数据(一般为增,删,改)

将更新后的数据集同写到数据源中,也就是说,更新数据集的过程不会同时将更改直接写入数据源,因为数据源是断开连接的,必须通过代码显式执行一下。具体做法是调用数据适配器的update方法

      注:在某些情况下是不能使用数据集的。例如想要创建表之类的数据库元素,则必须使用命令对象

 

如何直接对数据库进行操作?

 

      通过command(命令)对象执行sql语句或存储过程,如果执行的结果返回的是一个记录集,则可以使用datareader(数据读取器)对象读取数据。.net针对不同的提供程序创建了相应的command对象,例如:

oledbcommand:用于ole db提供程序

sqlcommand:sql server7.0或更高版本

odbccommand:odbc数据源的command对象

使用command对象的步骤

 

1.构造命令对象

 

下面是一段构造cmd命令对象的代码。它使用的连接对象为cn。所要执行的命令是从information表中选择所有的数据

[html]  

dim cnstr as string="password=123456;persist security info=true;user id=sa;"&_  

"initialcatalog=mycharge;data source=192.168.24.60"  

dim cn assqlconnection =new sqlconnection ()  

cn.connectionstring=cnstr 'connectionstring 是connection对象最重要的一个属性,它用来指定与数据库建立连接时使用的连接串  

cn.open ()  

dim sql as string="select*from categories"  

dim cmd assqlcommand =new sqlcommand ()  

cmd .connection =cn  

cmd.commandtext =sql  

   

 

 

2.执行命令

 

命令对象所提供的用于执行命令的方法有很多,具体使用哪个方法取决于命令的执行结果返回什么样的数据

 

cancel:取消命令的执行

executenonquery:执行非查询类sql语句并返回受影响的行数

executereader:执行查询,将查询结果返回到datareader中

executescalar:执行查询,并返回查询所返回的结果集中第一行的第一列,忽略额外的列或行

executexmlreader:执行查询,将查询结果返回到一个xmlreader对象中

 

3.读取数据

   

  下面代码是从表information中读取数据,并将数据列id和name的所有数据输出到控制台

[html]  

dim cnstr as string="password=123456;persist security info=true;user id=sa;"&_  

"initialcatalog=mycharge;data source=192.168.24.60"  

dim cn assqlconnection =new sqlconnection ()  

cn.connectionstring=cnstr 'connectionstring 是connection对象最重要的一个属性,它用来指定与数据库建立连接时使用的连接串  

cn.open ()  

dim sql as string="select*from categories"  

dim cmd assqlcommand =new sqlcommand (sql ,cn )  

dim dr assqldatareader =cmd.executereader()  

while (dr.reader())  

     dim id as string=dr("id").tostring()  

     dim name as string=dr("name").tostring()  

   

     console.writeline("编号:{0}姓名:{1}" ,id ,name)  

end while  

dr.close()  

cn.close()  

 

注:

datereader是一个只向前的连接光标,即只能沿一个方向遍历记录,在此过程中数据库连接要一直保持打开状态,否则将不能通过datareader读取数据

在完成数据读取后,需要调用close()方法关闭datareader对象,