ADO.Net之SqlConnection、 Sqlcommand的应用

SqlConnection 的介绍与应用

1、介绍与作用

SqlConnection是ADO.NET中的连接类。

使用sqlconnection 类可以连接到SQL  Server数据库。

2、主要属性以及方法

主要属性:ConnectionString(连接字符串)

其它属性简介:

属性

说明

ClientConnectionId

最近连接尝试连接的 ID,无论该尝试是成功还是失败。

ConnectionTimeout

获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。 (重写 DbConnectionConnectionTimeout。)

Container

获取 IContainer,它包含 Component。 (继承自 Component。)

Credential

获取或设置此连接的 SqlCredential 对象。

Database

获取当前数据库或连接打开后要使用的数据库的名称。 (重写 DbConnectionDatabase。)

DataSource

获取要连接的 SQL Server 实例的名称。 (重写 DbConnectionDataSource。)

FireInfoMessageEventOnUserErrors

获取或设置 FireInfoMessageEventOnUserErrors 属性。

PacketSize

用来与 SQL Server 的实例进行通信的网络数据包的大小,以字节为单位。

ServerVersion

获取包含客户端连接的 SQL Server 实例的版本的字符串。 (重写 DbConnectionServerVersion。)

Site

获取或设置Component 的 ISite。

State

指示最近在连接上执行网络操作时, SqlConnection 的状态。 (重写 DbConnectionState。)

StatisticsEnabled

如果设置为 true,则对当前连接启用统计信息收集。

WorkstationId

获取标识数据库客户端的一个字符串。

方法:Open();(打开数据库)  Close();(关闭数据库)

构造函数:

名称

说明

SqlConnection

初始化 SqlConnection 类的新实例。

SqlConnection(String)

如果给定包含连接字符串的字符串,则初始化 SqlConnection 类的新实例。

SqlConnection(String, SqlCredential)

初始化给定连接字符串的 SqlConnection 类的新实例,而不使用包含用户识别号和密码的 Integrated Security = true 和 SqlCredential 对象。

3、创建SqlConnection对象:

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

SqlConnection  connection=new  SqlConnection(connectionString);

要访问数据源,必须先建立连接。这个连接对象里描述了数据库服务器类型、数据库的名字、用户名、密码等参数。

SqlConnection  conn=new  SqlConnection();

conn.ConnectionString=”Data Source=(Local);

Initial  Catalog=pubs;  uid=sa;  pwd=sa;”

调用SqlConnection 对象的Open()与Close() 方法来打开和关闭数据库的代码如下:

打开数据库:connection.Open();

关闭数据库:connection.Close();

SqlCommand的介绍与应用

SqlCommand属于命令类

1、作用:

SqlCommand 对象用于执行具体的SQL语句,如增加、删除、修改、查找。

2、主要属性以及方法

SqlCommand对象的常用属性

属  性

说  明

Connection属性

指定Command对象所使用的Connection对象。

CommandType属性

指定Command对象的类型,有3种选择:

1 Text:表示Command对象用于执行SQL语句。

2 StoredProcedure:表示Command对象用于执行存储过程。

3 TableDirect:表示Command对象用于直接处理某个表。

CommandType属性的默认值为Text

CommandText属性

根据CommandType属性的取值来决定CommandText属性的取值,分为3种情况:

1 如果CommandType属性取值为Text,则CommandText属性指出SQL语句的内容

2 如果CommandType属性取值为StoredProcedure,则CommandText属性指出存储过程的名称

3 如果CommandType属性取值为TableDirect,则CommandText属性指出表的名称

CommandText属性的默认值为SQL语句

CommandTimeout属性

指定Command对象用于执行命令的最长延迟时间,以秒为单位,如果在指定时间内仍不能开始执行命令,则返回失败信息。

默认值为30秒。

Parameters属性

指定一个参数集合。

SqlCommand对象的重要方法:

方法

说明

ExecuteScalar

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

ExecuteNonQuery

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

ExecuteReader

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

3、SqlCommand对象的使用步骤如下

(1)创建SqlConnection对象

SqlConnection  connection=new  SqlConnection(connectionString);

(2)定义SQL语句

把所要执行的SQL语句赋给字符串。

(3)创建SqlCommand对象

SqlCommand command = new SqlCommand();

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

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

举例如下:

private void btn_SignUp_Click(object sender, EventArgs e)

{

if (this.txb_UserNo.Text.Trim() == "")                                                      //若用户号文本框为空;

{

MessageBox.Show("用户号不能为空!");                                                    //给出错误提示;

this.txb_UserNo.Focus();                                                                //用户号文本框获得焦点;

return;                                                                                 //返回;

}

if (this.txb_Password.Text.Trim() == "")                                                    //若密码文本框为空;

{

MessageBox.Show("密码不能为空!");                                                      //给出错误提示;

this.txb_Password.Focus();                                                              //密码文本框获得焦点;

return;                                                                                 //返回;

}

SqlConnection sqlConnection = new SqlConnection();                                          //声明并实例化SQL连接;

sqlConnection.ConnectionString =

"Server=(local);Database=EduBaseDemo;Integrated Security=sspi";                         //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);

SqlCommand sqlCommand = sqlConnection.CreateCommand();                                      //调用SQL连接的方法CreateCommand来创建SQL命令;该命令将绑定SQL连接;

sqlCommand.CommandText =

"INSERT tb_User (No,Password) VALUES(@No,HASHBYTES('MD5',@Password));";                 //指定SQL命令的命令文本;命令文本包含参数;

sqlCommand.Parameters.AddWithValue("@No", this.txb_UserNo.Text.Trim());                     //向SQL命令的参数集合添加参数的名称、值;

sqlCommand.Parameters.AddWithValue("@Password", this.txb_Password.Text.Trim());

sqlCommand.Parameters["@Password"].SqlDbType = SqlDbType.VarChar;                           //将密码参数的类型设为变长字符串;

//SQL参数自动识别类型;若参数值为字符串,则类型自动设为NVARCHAR,且可在执行时自动转换;但对于相同密码,VARCHAR/NVARCHAR类型所获得的散列值不同,故需手动将SQL参数类型统一设为VARCHAR;

int rowAffected = 0;                                                                        //声明整型变量,用于保存受影响行数;

string message = "";                                                                        //声明字符串变量,用于保存消息;

try                                                                                         //尝试;

{

sqlConnection.Open();                                                                   //打开SQL连接;

rowAffected = sqlCommand.ExecuteNonQuery();                                             //调用SQL命令的方法ExecuteNonQuery来执行命令,向数据库写入数据,并返回受影响行数;

}

catch (SqlException sqlEx)                                                                  //捕捉SQL异常;

{

if (sqlEx.Number == 2627)                                                               //若SQL异常编号为2627,则违反主键/唯一约束,即插入重复值;

{

message = "您注册的用户号已存在,请重新输入!";                                     //给出合适的错误提示;

}

else                                                                                    //否则;

{

message = "注册失败!";                                                             //给出一般错误提示;

}

}

finally                                                                                     //结束;

{

sqlConnection.Close();                                                                  //关闭SQL连接;

}

if (rowAffected == 1)                                                                       //若成功写入1行记录;

{

message = "注册成功。";                                                                 //给出正确提示;

}

MessageBox.Show(message);                                                                   //显示提示;

}

ADO.Net之SqlConnection、 Sqlcommand的应用的更多相关文章

  1. ado.net中的 sqlconnection sqlcommand datareader dataset SqlDataAdapter之间的关系

    Connection: 和数据库交互,必须连接它.连接帮助指明数据库服务器.数据库名字.用户名.密码,和连接数据库所需要的其它参数.Connection对象会被Command对象使用,这样就能够知道是 ...

  2. ADO.NET基础知识学习(SQLCOnnection&SQLCommand&SQLDataReader&SQLDataAdapter&DataSet)

    通过ADO.NET技术,我们可以高效的完成客户端同数据库之间的数据访问操作,便于我们在客户端程序简便高效的访问以及获取数据库中的有用数据,同时也可以对数据库中的数据进行更新,即可以完成客户端与数据库之 ...

  3. ADO.NET之SqlConnection、sqlcommand的应用(学习笔记)

    一.知识描述点 1.SqlConnection (1)使用SqlConnection类可以连接到SQL Server数据库.SqlConnection对象的主要属性和方法如下: ——属性:Connec ...

  4. LINQ to SQL语句(19)之ADO.NET与LINQ to SQL

    它基于由 ADO.NET 提供程序模型提供的服务.因此,我们可以将 LINQ to SQL 代码与现有的 ADO.Net 应用程序混合在一起,将当前 ADO.NET 解决方案迁移到 LINQ to S ...

  5. ado.net 用c#与数据库连接实现增删改查

    ADO.NET: 数据访问技术 就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 是所有数据访问技术的基础 ...

  6. ADO.NET 增、删、改、查

    ADO.NET:数据访问技术 就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中也可以将数据库中的数据提取到内存中供程序调用 所有数据访问技术的基础 连接 ...

  7. ADO.NET 增 删 改 查

    ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...

  8. ADO.NET 增删改查的基本用法

    ADO.NET:数据访问技术 就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中也可以将数据库中的数据提取到内存中供程序调用 所有数据访问技术的基础 连接 ...

  9. ADO .NET 链接 增删改查

    ADO.NET: 数据访问技术 就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中也可以将数据库中的数据提取到内存中供程序调用 所有数据访问技术的基础 连 ...

随机推荐

  1. 多线程简单案例 - join( ) -lock()

    join() 在调用结束前,主线程不会结束 不加的话,主线程会在子线程结束前继续执行:加了join(),主线程会等待子线程结束后在继续执行下去 #python3 #main print number ...

  2. 实施erp的建议

    纺织行业实施ERP建议 (一)企业各层面应提高对ERP的认识 ERP项目的实施范围横跨企业的每一个部门,在实施过程中需要调动各个部门的资源,这首先需要企业领导者高度重视,从实施的各个环节给予支持:其次 ...

  3. mongodb学习一(使用mongoResposity)

    最近公司做一个项目用到了mongodb,下面来介绍一下MongoRepository接口. 大家可以类比Hibernate的jpa,MongoRepository是一个springdata提供的一个有 ...

  4. java 加载并读取Properties 文件

    1 .系统自带的application.properties  (以下代码仅供参考,不能粘贴复制) 假设application.properties文件有下面两个值: come.test.name = ...

  5. 调试日志——基于stm32的智能声光报警器(一)

    今天新画的PCB板子到了,到了手中焊好电源部分测试,没有问题. 测试了下载程序,没有问题.时钟电路供电电路正常. 但是在程序运行的时候发现了问题,程序下载进去了却不运行. 这时候就要从原理图来找问题了 ...

  6. 树莓派3B+SimpleCV上连接iPhone4s摄像头

    目的:把iPhone4s当成网络摄像头,通过wifi连接到树莓派上,做为树莓派的摄像头. 1. iPhone4s上安装mini WebCam应用. 很旧的一个app, 没有密码,简单,无广告,免费. ...

  7. STM32(6)——USART串口的使用

    1. 串口的基本概念 在STM32的参考手册中,串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换.USART利用 ...

  8. 001---CBV和restful规范

    CBV 和 restful规范 知识点准备: django的view FBV:基于函数的视图 CBV:基于类的视图 urls.py from django.urls import path from ...

  9. 版本控制工具(下)——Git的远程仓库、分支管理与其它操作

    预备知识: SSH协议参考资料:http://blog.csdn.net/vevenlcf/article/details/43273405 图解公钥和私钥:http://blog.csdn.net/ ...

  10. 版本控制工具——SVN

    一.需求 需求之一:备份 小明负责的模块就要完成了,就在即将Release之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月来的努力付之东流 需求之二:代码还原 这个项目中需要一个很复杂的功能,老王摸索 ...