ADO.NET中的非脱机数据库查询

 

数据库查询总是很让人纠结,以前用的也不多,就是那么几个语句,来回倒,但是在学习的过程中发现,发现一个真理“搞不懂的问题,总是要牵绊你”,这就好比,“出来混,总是要换的”,以前的知识没有学踏实,现在必须补回来。

一、数据库连接。

很简单,不多说,只需要一下几步。

 1、创建连接字符串——connectionstring

2、生成Sqlconnection对象。

3、打开sqlconnction对象——(进行操作)

4、(操作完毕)——关闭sqlconnction对象

代码如下

'定义连接字符串
 Dim strconn  as string =  "Data Source=xiaohong—pc; Initial Catalog=shujukumingcheng;user id=sa; password=mima"  
 '定义连接对象
 Dim conn As New SqlConnection(strconn)
'打开连接
If (conn.State =ConnectionState.Closed) Then
    conn.Open()
End If
'关闭连接
conn.Close()
 

二、数据库查询

这里主要介绍非脱机数据库查询。

1、使用sqlcommand

 

1)、创建SqlCommand对象——三种方式

 

A、直接New一个新的sqlcommand对象。

Dim cmd asnew sqlcommand()

Cmd.connection=conn

Cmd.commandtext=strsql

 

B、使用参数化构造函数

Dim cmd asnew sqlcommand(conn,strsql)

 

C、使用connection对象创建

Dim cmd=conn.createcommand()

Cmd.commandtext=strsql

 

总结:这里要说明的两点:数据库命令对象(sqlcommand)不是单独存在的,要依附于连接对象,

一定要设置sqlcommandconnection属性;有命令对象,执行就要设置commandtext,它执行内容,否则毫无意义。

 

2)、使用Sqlcommand执行查询

 

A、执行返回行的查询

使用sqlcommandexecutereader方法,返回一个sqldatareader对象,通过这个对象来检查查询的结果。

sqldatareader是一行一行读取数据库中的记录,且一次只读取一行数据。

使用:dim reader assqldatareader =cmd.executereader()

优点:执行速度快。

缺点:不可返回,读取下一行数据后,上一行数据就会消失。

注意:执行完后,关闭sqldatareader

 

分析:虽然一次只可以读取一行记录,但是在数据库查询的时候,遇到返回结果集是多行记录的时候,如果不适用dataset或者datatable之类的方法时,我们也是可以使用reader的。这就需要我们每次在取出reader读取一行之后,使用变量取出reader中的数据,然后再读取数据库中的数据即可。

(博客详见)

代码如下:(sqlhelper中的一个查询方法)

 

Public Function ExecuteReader(strsql AsString, para As SqlParameter) As SqlDataReader
 
        '设置命令对象的连接
        cmd.Connection = conn
        '设置命令对象的命令文本
        cmd.CommandText = strsql
        '添加参数
        cmd.Parameters.Add(para)
        '打开连接
        If (conn.State =ConnectionState.Closed) Then
            conn.Open()
        End If
        '声明datareadr的对象,并执行
        Dim reader As SqlDataReader =cmd.ExecuteReader()  
        '关闭连接
        reader.Close()
        conn.Close()
        Returnreader
    End Function


 B、执行不返回结果集的查询

这种查询就是所谓的“增,删,改”操作查询。针对记录的操作有insert,update,delete等,针对表的操作有:create,alter,drop等。

这些操作的共同特点:不反悔任何行,如果使用sqldatareader就有点浪费,所以我们使用sqlcommandExecuteNonQuery方法,该方法执行操作,并且返回一个integer值——受影响的行数。

使用该方法我们可以通过返回值来判定操作是否执行成功。

 

代码如下:

 '****************************************************
    '</summary>  有参数的增,删,改的操作,返回布尔类型
    '<paramname="sqlstr">增/删/改/语句 
    ' <paramname="arrayparas">参数数组</param> 
    ' <returns></returns> 
   '*****************************************************
PublicFunction ExecuteAddDeleteUpdate(sqlstr As String, arryparas() As SqlParameter)As Boolean
        '初始化返回值
        Dim flag As Boolean = False
        '设置cmd 对象连接对象
        cmd.Connection = conn
        '设置cmd 对象的连接文本
        cmd.CommandText = strsql
 
        Dim intindex As Integer
        '遍历数组添加到cmd对象参数表中
        For intindex = 0 To arryparas.Length -1
           cmd.Parameters.Add(arryparas(intindex))
        Next
            '判断连接是否打开,若关闭,则打开
            If conn.State =ConnectionState.Closed Then
                conn.Open()
            End If
            '执行结果大于0 ,则执行成功
            flag = cmd.ExecuteNonQuery() > 0
              '最后关闭数据库连接
            If conn.State =ConnectionState.Open Then
                conn.Close()
            End If
        '返回值
        Return flag
    End Function
 

你可能感兴趣的:(数据库查询,ADO,sqlcommand,SqlDataReader)