ADO.net入门(三):SQL查询

im, 无色
im, 无色
im, 无色
884
文章
0
评论
2019年8月1日22:51:34 评论 381

成功连接到数据库,意味着用户到数据库是一条平坦的大桥,就可以发送自己的意愿,要求数据库返回相应的结果。

于是,第二步就是向数据库发出自己的意愿和礼物。

可以发送一条SQL语句,或者向数据库发送数据库中本身集成好的批处理过程(类似存储过程等),这样数据库才可以根据这些返回相应的结果。

在SqlServer中,它的指令发送是用SqlCommand对象来负责的。正如一个公司,跑关系的是跑关系的,负责具体业务的是负责具体业务的。

所以SqlCommand对象的业务就是发送用户的指令到数据库。

下面的很多,不用看完,对照后面实例,看下,明白一下,微软自动有智能提示,它直接造成我们懒人不用记,嘿嘿。

SqlComma对象属性

CommandText            获取或者设置 要对数据库执行的SQl语句或者存储过程

CommandTimeout     获取或设置在终止执行命令的尝试并生成错误之前的等待时间。有时因错误不能执行,因为设置一个时间,如果超时就意味着错误。

CommmandType        获取或设置一个值,该值指示如何解释CommandText属性

Connection                   获取或设置Command的此实例使用的Connection

Container(从Component继承)     获取IContainer,包含Component

DesignTimeVisible     获取或设置一个值,该值指示命令对象是否应在Windows窗体设计器控件中可见

Parameters                   获取ParameterCollection

Site(从Component继承)  获取或设置Component的ISite

Transaction                 获取或设置将在其中执行Command的Transaction相关东西。就是与事务(相当于SQL中的批处理)相关的东西

UpdateRowSource        获取或设置命令结果在由DbDataAdapter的Update方法使用时如何应用DataRow。也就是当得到结果集,且变成我们自己的DataSet时

,但是这时我们操作DataSet有更新、修改或删除DataSet到数据库时,这个结果怎么再次返回到DataRow中进行呈现呢?

SqlCommand对象方法

Cancel                            尝试取消Command的执行

CreateObjRef                    创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。

CreateParameter              创建Parameter对象的新实例

Dispose                              已重载,释放由Component战胜的资源

ExecuteNonQuery                已重载,将CommandText发送到Connection并生成一个DataReader。就是把Sql语句发送,进行非查询的执行,就是一个一个的记录。

相当于水管式查询,NonQuery就是指令这个的。服了这解释,只有白话才明白

ExcecuteReader                 已重载,将CommandText发送到Connection并生成一个DataReader(单行查询)

ExecuteScalar                       执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。因此它对于聚合查询相当有用,比如查询记录有多少行

返回的结果集只能有一行且只有一行,因为,这个就是直接得这个数据的。

ExecuteXmlReader             将CommandText发送到Connection并生成一个XmlReader对象(同DataSet类似)

GetHashCode                     用作特定类型的哈希函数,适合在哈希算法和数据结构(如哈希表)中使用

GetLifeTimeService             检索控制此实例的生存期策略的当前生存期服务对象

GetType                                   获取当前实例的Type

InitializeLifetimeService         获取控制此实例的生成策略的生存期服务对象

Prepare                                      在SqlServer的实例上伊娃命令的一个准备版本

ResetCommandTimeout        将CommnadTimeout属性重置为期默认址

说了关于的SqLCommmand,它有三种创建方式:

1.直接new,然后设置对象的相关属性,如设置CommnadText和Connnecton

2.使用构造函数来执行,意思在new对象,把相关属性作参数,起到上面1的作用,幸好前段时间学了C++,明白了构造函数。

3.用CreateCommand方法来创建一个特定的连接命令。

Imports System.Data.SqlClient
Module Module1
    Sub Main()
        Dim cn As New SqlConnection
        cn.ConnectionString = "pwd=123456;uid=sa;Initial Catalog=学生成绩管理系统;Data Source=ZHENG"
        cn.Open()
        Dim cmd As New SqlCommand
        cmd.CommandText = "select * from 学生信息"
        cmd.CommandType = CommandType.Text
        cmd.Connection = cn
        '---------------下面是结果集的处理,可略过-----
        Dim dap As New SqlDataAdapter(cmd)
        Dim ds As New DataSet
        dap.Fill(ds)
        '---------------只看下面的,对SqlCommand的属性的方法---
        Console.WriteLine("连接成功,发送成功,看看命令相关属性情况:")
        Console.WriteLine()
        Console.WriteLine("CommandText查询SQl语句:" & cmd.CommandText)
        Console.WriteLine("CommandTimeout查询超时(秒):" & cmd.CommandTimeout)
        Console.WriteLine("CommandType查询类型(文本,存储过程、表名,默认文本(SQl)):" & cmd.CommandType)
        Console.WriteLine("Connection连接对象:" & cmd.Connection.ConnectionString)
        Console.WriteLine("DesignTimeVisible窗体设计器中是否可见:" & cmd.DesignTimeVisible)
        Console.WriteLine(cmd.Parameters)
        Console.WriteLine(cmd.Transaction)
        Console.WriteLine("UpdatedRowSource刷记录时在RowSet中的表现:" & cmd.UpdatedRowSource)
        cn.Close()
        Console.ReadKey()
    End Sub
End Module

ADO.net入门(三):SQL查询
上面按时平辅对象的方式:先设置属性,再使用对象的方法,这是我们OOP入门学的。

然后面下面再用一个简便的,就是用构造法,直接构造对象,再用方法,其实工作量一样,只是代码少了点。

Imports System.Data.SqlClient
Module Module1
    Sub Main()
        Dim cnStr As String = "pwd=123456;uid=sa;Initial Catalog=学生成绩管理系统;Data Source=ZHENG"
        Dim cn As New SqlConnection(cnStr)
        cn.Open()

        Dim sql As String = "select * from 学生信息"
        Dim cmd As New SqlCommand(sql, cn)

        '---------------下面是结果集的处理,可略过-----
        Dim dap As New SqlDataAdapter(cmd)
        Dim ds As New DataSet
        dap.Fill(ds)
        '-----------------------------------------------
        Console.WriteLine(cmd.CommandType)
        cn.Close()
        Console.ReadKey()
    End Sub
End Module

ADO.net入门(三):SQL查询
这里的commandText它的默认值就是text,即SQL语句,所以在构造函数时,没有使用指明它的值。但最后成功后,查询它的值

可以看出是1,就是CommandType.Text,即值是1