ADO.Net之SqlConnection、 Sqlcommand的应用
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的应用的更多相关文章
- ado.net中的 sqlconnection sqlcommand datareader dataset SqlDataAdapter之间的关系
Connection: 和数据库交互,必须连接它.连接帮助指明数据库服务器.数据库名字.用户名.密码,和连接数据库所需要的其它参数.Connection对象会被Command对象使用,这样就能够知道是 ...
- ADO.NET基础知识学习(SQLCOnnection&SQLCommand&SQLDataReader&SQLDataAdapter&DataSet)
通过ADO.NET技术,我们可以高效的完成客户端同数据库之间的数据访问操作,便于我们在客户端程序简便高效的访问以及获取数据库中的有用数据,同时也可以对数据库中的数据进行更新,即可以完成客户端与数据库之 ...
- ADO.NET之SqlConnection、sqlcommand的应用(学习笔记)
一.知识描述点 1.SqlConnection (1)使用SqlConnection类可以连接到SQL Server数据库.SqlConnection对象的主要属性和方法如下: ——属性:Connec ...
- LINQ to SQL语句(19)之ADO.NET与LINQ to SQL
它基于由 ADO.NET 提供程序模型提供的服务.因此,我们可以将 LINQ to SQL 代码与现有的 ADO.Net 应用程序混合在一起,将当前 ADO.NET 解决方案迁移到 LINQ to S ...
- ado.net 用c#与数据库连接实现增删改查
ADO.NET: 数据访问技术 就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 是所有数据访问技术的基础 ...
- ADO.NET 增、删、改、查
ADO.NET:数据访问技术 就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中也可以将数据库中的数据提取到内存中供程序调用 所有数据访问技术的基础 连接 ...
- ADO.NET 增 删 改 查
ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...
- ADO.NET 增删改查的基本用法
ADO.NET:数据访问技术 就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中也可以将数据库中的数据提取到内存中供程序调用 所有数据访问技术的基础 连接 ...
- ADO .NET 链接 增删改查
ADO.NET: 数据访问技术 就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中也可以将数据库中的数据提取到内存中供程序调用 所有数据访问技术的基础 连 ...
随机推荐
- 分享一个ASP.NET的弹出层,比较好用!
网上的一些弹出层的控件多了去了,我很久之前用了一个,效果还不错,但如果应用到ASP.NET的话,会出现“弹出层内的控件runat='server'失效”的情况,具体情况我也不太会描述,但就是那些onc ...
- ext4文件系统特性浅析
ext4作为Linux下的文件系统因其简单性.易管理性.兼容性强等特定,深受大多数用户喜欢,并且作为大多数Linux发行版中的默认文件系统.但是随着现在文件数目的增多以及文件数据的增大,ext4文件系 ...
- Java并发编程(十)死锁
哲学家进餐问题 并发执行带来的最棘手的问题莫过于死锁了,死锁问题中最经典的案例就是哲学家进餐问题:5个哲学家坐在一个桌子上,桌子上有5根筷子,每个哲学家的左手边和右手边各有一根筷子.示意图如下: 哲学 ...
- c#一些处理解决方案(组件,库)
1.关系数据库 postgresql,mysql,oracle,sqlserver 2.本地数据库 sqlite,berkeleydb,litedb 3.缓存数据库 redis,mongdb 4.数据 ...
- nginx+uwsgi+flask+supervisor 项目部署
环境 - Linux: Ubuntu 16.04 - uWSGI 2.0.18 - Flask 1.0.2 - supervisor 3.2.0 - nginx/1.8.1 首先区分几个概念 WSGI ...
- Tomcat 或JBOSS java.lang.ArrayIndexOutOfBoundsException: 8192原因及其解决方法
2018-04-02 09:24:55 org.apache.catalina.connector.CoyoteAdapter service 严重: An exception or error oc ...
- [示例] Firemonkey 面包屑导航
原码下载:[示例]Firemonkey面包屑导航_Aone.zip 效果:(以下效果不用写一行代码)
- spark or sparkstreaming的内存泄露问题?
关于sparkstreaming的无法正常产生数据---->到崩溃---->到数据读写极为缓慢(或块丢失?)问题 前两阶段请看我的博客:https://www.cnblogs.com/wa ...
- 调试日志——基于stm32的智能声光报警器(三)
智能声光报警器基本功能调试完成. 1.通过拨码开关来设置LED闪烁的频率. 2.关门时喇叭不想,灯熄灭. 3.旁路模式时,灯处于闪烁状态,此时关门灯扔闪烁. 关于此次代码我觉得还是有可以优化的地方,电 ...
- 手动封装一个属于自己的AJAX类库
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...