第二周学习笔记(ADO中SqlConnection和SqlCommand的应用)

一.  知识点描述+自编范例

  1.  SqlConnection对象

使用SqlConnection类可以连接到SQL Server数据库。SqlConnection对象的主要属性和方法如下图所示:

 

属性和方法

说明

属性

ConnectionString

连接字符串

方法

Open

Close

打开数据库连接

关闭数据库连接

连接数据库主要分为以下3步。

(1)定义连接字符串。

我们可以使用集成的Windows身份验证和SQL Server身份验证这两种不同的方式来连接SQL Server数据库。

        使用Windows身份验证的数据库连接字符串如下:

Server=(local);Database=ACQDIM;Integrated=sspi;

        使用SQL Server身份验证的数据库连接字符串如下:

Server=(local);Database=AddressList;Integrated=false;uid=jsj;[email protected];

(2)创建SqlConnection对象。

可以使用定义好的连接字符串创建SqlConnection对象,代码如下:

SqlConnection sqlconnection=new SqlConnection(connString);

(3)打开数据库。

调用SqlConnection对象的Open()方法打开数据库,代码如下:

sqlconnection.Open();

        关闭数据库。

数据库连接使用完毕后,要调用SqlConnection对象的Close()方法显示关闭数据库连接。代码如下:

sqlconnection.Close();

1.1  下面则用一个简单的连接数据库案例来说明SqlConnection对象的应用。

窗口如图所示:

第二周学习笔记(ADO中SqlConnection和SqlCommand的应用)

 

源代码如下:

第二周学习笔记(ADO中SqlConnection和SqlCommand的应用)

 

运行结果如下:

第二周学习笔记(ADO中SqlConnection和SqlCommand的应用)

第二周学习笔记(ADO中SqlConnection和SqlCommand的应用)

 

2.   SqlCommand对象

SqlCommand对象用于执行具体的SQL语句,如增加、删除、修改、查找。SqlCommand对象的使用步骤如下。
(1)创建SqlConnection对象。
  按照上述1. 的方法建立SqlConnection对象。

(2)定义SQL语句。
  把所要执行的SQL语句赋给字符串。

(3)创建SqlCommand对象。
我们可以调用SqlCommand类的构造方法创建SqlCommand对象,传入两个参数,即SQL语句和SqlConnection对象,代码如下:

SqlCommand cmd=new SqlCommand(sqlStr,conn);

(4)调用SqlCommand对象的某个方法,执行SQL语句。

注意:在调用SqlCommand对象的某个方法之前,一定要打开数据库连接,否则程序会出错。

下面则是SqlCommand对象的几个重要方法,如下图所示:

方法

说明

ExecuteScalar

执行查询,并返回查询结果中第一行第一列的值, 类型是object

ExecuteNonQuery

执行SQL语句并返回受影响的行数

ExecuteReader

执行查询命令,返回SqlDataReader对象

 

 

 

 

 

2.1  下面我们就以实现用户登录功能为例子来说明这SqlCommand对象中的ExecuteScalar和ExecuteReader方法的应用。

第二周学习笔记(ADO中SqlConnection和SqlCommand的应用)

 

2.1.1   调用ExecuteScalar方法实现用户登录功能

源码运行截图如下:

第二周学习笔记(ADO中SqlConnection和SqlCommand的应用)

我们可以看到上面的实现用户登录的代码中,我们就是调用了SqlCommand对象的ExecuteScalar方法来判断用户名、密码是否正确的。ExecuteScalar返回的是查询结果的第一行第一列的值,而且类型是object,所以需要进行强制类型转换:

int n =Convert. ToInt32( cmd. Executescalar());

对于得到的结果,如果n等于1,表明用户名和密码正确,登录成功:否则,登录失败。

 

2.1.2  调用ExecuteScalar方法实现用户登录功能

使用SqlDataReader对象,它可以从数据库中检索只读的数据,它每次从查询结果中读取行到内存中。对于SQL Server数据库,使SqlDataReade对象,其对数据库的读取速度非常快。

SqlDataReade对象的主要属性和方法如下表:

属性和方法

说明

属性

HasRows

 

FieldCount

指示是否包含查询结果。如果包含查询结果则返回true否则返回false

当前行中的列数

方法

Read

 

Close

前进到下一行记录如果读到记录则返回true,否则返回false

关闭SqIDataReader对象

 

 

 

 

 

 

使用SqlDataReader的步骤如下。

(1)创建SqlCommand对象。

Sq1Command cmd = new SqlCommand(sqlStr, conn);

(2)调用SqlCommand对象的ExecuteReader方法创建SqlDataReade对象。

conn.Open() ;

SqlDataReader dr = cmd. ExecuteReader() ;

(3)调用SqlDataReader对 象的Read方法逐行读取数据,如果读到记录就返回true)否则返回false。

dr .Read();

(4)读取当前行中某列的值。

我们可以像数组样,用方括号来读取某列的值,如dr[0].ToString,方括号中的索引号从0开始:也可以通过列名来读取,如

dr["GroupName"].ToStringo,但取出的值是objeet类型,要进行类型转换。

(5)调用Close方法,关闭SqlDataReader。

使用SqlDataReader读取数据的时候会占用数据库连接,必须调用它的Close方法关闭SqlDataReader,才能够用数据库连接进行其他操作。

dr.close();

下面我们改用SqlCommand. SqDataReader对象 来实现用户登录功能。源码运行截图如下:

第二周学习笔记(ADO中SqlConnection和SqlCommand的应用)

在上面的代码中,我们通过调用Sq1Command对象的ExecuteReader方法,返回SqlDataReader对象。然后通过SqlDataReader对象的Read方法判断是否包含查到的记录,如果有记录,则Read方法返回true,即用户名、密码正确;否则Read方法返回false。

PS:至于SqlCommand对象中的ExecuteNonQuery方法,它主要用于执行更新数据库的操作,如增加,删除,修改记录等等。

下面我们就拿一个通讯录中添加联系人分组的例子来说明SqlCommand对象中的ExecuteNonQuery方法是如何实现在数据库中增加记录的操作。

该窗口如图所示,该窗体的两个text控件名称分别为txtGroupName和txtGroupmemo。

第二周学习笔记(ADO中SqlConnection和SqlCommand的应用)

运用SqlCommand对象中的ExecuteNonQuery方法实现插入分组代码如下:

第二周学习笔记(ADO中SqlConnection和SqlCommand的应用)

运行结果如下:

第二周学习笔记(ADO中SqlConnection和SqlCommand的应用)

第二周学习笔记(ADO中SqlConnection和SqlCommand的应用)

可见,我们成功调用了SqlCommand对象的ExecuteNonquery方法执行了insert语句,并在后台增加了一条记录。(即该方法成功执行SQL语句并返回受影响的行数)

二. 思维导图如下:

第二周学习笔记(ADO中SqlConnection和SqlCommand的应用)