《C操作SQLServer数据库.ppt》由会员分享,可在线阅读,更多相关《C操作SQLServer数据库.ppt(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C#语言操作SQLServer数据库在c#程序开发中经常需要和SQL Server数据库打交道,下面我们就了解一下c#操作SQL Server数据库的方法:1.概述 首先是为我们的程序添加必要的引用以及一些数据成员。因为我们的程序涉及到数据库的访问操作,所以必须要运用到数据提供者(Data Provider)的对象。在.Net框架下,我们主要运用的数据提供者分为两类,一类是Sql类型的,另一类是OleDb类型的。它们涉及到的命名空间分别为和。因为我们的程序访问的是SQL Server数据库,所以我们运用的数据提供者对象应为Sql类型的。原因很简单,该类型的对象是专门为SQL Server数据库
2、而设计的,所以性能得到了大大的优化。所以,在我们的程序的开始处添加如下一句语句:using System.Data.SqlClient;C#操作SQLServer数据库的步骤引入命名空间usingSystem.Data.SqlClient;定义连接串定义SqlConnection对象,并使用Open()方法打开对数据库的连接。定义SqlCommand对象,并指定使用哪个连接对象连接到数据库。定义SqlCommand对象的命令类型定义SqlCommand对象使用何种SQL命令使用SQLCommand对象的方法获得数据库中的数据并放入结果集中。使用SqlDataReader对象的方法将结果集中的数
3、据读取出来加以操作。关闭数据库连接,即调用SqlConnectionfangfadeClose()方法。1.定义变量添加对命名空间的引用后,我们接下来为程序添加一些必要的数据成员,这些数据成员可以完成一些对数据库及其对象的操作。/连接字符串,包含了连接参数privatestringConnectionString=“DataSource=数据库服务器的名字;InitialCatalog=数据库的名字;IntegratedSecurity=SSPI;privatestringConnectionString=“DataSource=数据库服务器的名字;InitialCatalog=数据库的名字;
4、PersistSecurityInfo=True;UserID=sa;Password=test”;/数据库连接对象。实现和数据库的连接privateSqlConnectionconn=null;/数据库连接命令对象。指定执行的SQL语句privateSqlCommandcmd=null;/存放SQL语句的。privatestringsql=null;一、一、SqlConnection类简介介语法:publicsealedclassSqlConnection:DbConnection,ICloneable表示与SQLServer数据库的连接。此类不能被继承。命名空间:程序集:(在System.
5、Data.dll中)两种构造函数:(1)publicSqlConnection()(2)publicSqlConnection(stringconnectionString)常用属性:1、获取当前取当前连接的状接的状态-State2、获取或取或设置用于打开置用于打开 SQL Server 数据数据库的字的字符串。符串。-ConnectionString3、获取要取要连接的接的 SQL Server 实例的名称。例的名称。-DataSource4、获取当前数据取当前数据库的名称或的名称或连接打开后要使用接打开后要使用的数据的数据库的名称。的名称。-DateBase5、获取等待取等待连接打开的接打
6、开的时间(以秒(以秒为单位)。位)。-ConnectionTimeOut 常用方法常用方法1、打开与数据、打开与数据库的的连接接-OpenpublicoverridevoidOpen()2、关关闭与数据与数据库的的连接接-ClosepublicoverridevoidClose()此方法是关闭任何已打开连接的首选方法。应用程序可以多次调用Close。不会生成任何异常。3、创建并返回一个与建并返回一个与 SqlConnection 关关联的的 SqlCommand 对象象-CreateCommandpublicSqlCommandCreateCommand()1、创建建SqlCommand对象象
7、SqlCommandcmd=newSqlCommand(SQLCMD,CON);参数:SQLCMD为SQL命令语句,CON为打开的数据库连接(即打开的SqlConnection类对象)。注:创建SqlCommand类对象之前应打开SqlConnection连接。2、执行命令行命令command类提供的执行命令的方法有很多,下面只介绍最常用的三个方法。ExecuteNonQuery()执行命令但不返回任何结果集(唯一返回语句执行所影响的行数),如果调用有输出参数的存储过程则返回值。(一般用于InsertUpdataDelete等不需要返回结果集的SQL语句)ExecuteReader()执行命令
8、,返回一个类型化的IDataReader(即返回SQL语句执行后生成的结果集)。一般用于Select等返回结果集的SQL语句。ExcuteScalar()执行命令返回一个值(执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。)例1stringConString=Server=duanyfsqlexpress;+Datebase=FamilyInformationManagement;+IntegratedSecrety=SSPI;SqlConnectioncon=newSqlConnection(ConString);con.Open();SqlCommandCmd=newS
9、qlCommand(DELETE*FROMUserWHEREUserID=123,con);Cmd.ExecuteNonQuery();con.Close();3、常用的属性、常用的属性CommandText 设置要对执行的SQL语句、表名或存储过程名。默认值为空字符串。(如果CommandType属性为StoredProcedure或TableDirect时,CommandText中表名或存储过程名如果包含特殊字符则用转义符语法设置)。CommandType设置如何解释CommandText值(即设置CommandText所代表的含义)。有三个选项(StoredProcedure存储过程名,
10、TableDirect表名,TextSQL文本命令),默认为Text。CommandTimeout获取或设置等待命令执行的时间(以秒为单位)。默认为30秒。(0表示无限制,会无限期地等待执行命令)。(当对上下文连接(要用连接字符串中的“contextconnection=true”打开的SqlConnection)执行命令时,CommandTimeout将不起作用)。Parameters 设置SQL语句或存储过程的参数。(如果参数与赋的值不匹配则会报错)。例例2 2(使用CommandText属性重写例1)stringConString=Server=duanyfsqlexpress;+Dat
11、ebase=FamilyInformationManagement;+IntegratedSecrety=SSPI“;SqlConnectioncon=newSqlConnection(ConString);con.Open();SqlCommandCmd=newSqlCommand();Cmd.CommandText=DELETE*FROMUserWHEREUserID=123;Cmd.CommandType=CommandType.Text;/默认为Text,此行可以不用Cmd.CommandTimeout=15;Cmd.ExecuteNonQuery();con.Close();例例3
12、3转义符语法设置重写例1(1)使用)使用new SqlParameterintUserID=123;stringConString=Server=duanyfsqlexpress;+Datebase=FamilyInformationManagement;+IntegratedSecrety=SSPI;SqlConnectioncon=newSqlConnection(ConString);con.Open();SqlCommandCmd=newSqlCommand(DELETE*FROMUserWHEREUserName=UserName,Con);SqlParameterParm=newS
13、qlParameter(UserID,SqlDbType.Int);Parm.Value=UserID;Cmd.Parameters.Add(SqlParm);Cmd.ExecuteNonQuery();con.Close();(2)不使用)不使用new SqlParameterintUserID=123;stringConString=Server=duanyfsqlexpress;+Datebase=FamilyInformationManagement;+IntegratedSecrety=SSPI;SqlConnectioncon=newSqlConnection(ConString)
14、;con.Open();SqlCommandCmd=newSqlCommand(DELETE*FROMUserHEREUserName=UserName,Con);Cmd.Parameters.Add(UserID,SqlDbType.Int);Cmd.ParametersUserID.Value=UserID;Cmd.Parameters.Add(SqlParm);Cmd.ExecuteNonQuery();con.Close();理解SqlCommand对象的ExecuteReader()和ExecuteNonQuery()方法ExecuteReader():将数据库中的数据读取到结果集中
15、,返回结果类型为:SqlDataReader这个类的类型结果ExecuteNonQuery()返回sql命令执行时所影响的行数,返回结果类型为intSqlDataReader类:用来保存有SqlCommand对象从数据库端读取到的数据集。结合实例理解SqlDataReader的Read()方法、GetValue()方法和GetOrdinal()方法完整例子代码如下:stringStrUserName;stringStrPassword;stringStrEmployID;stringSQLCommand=select*fromTab_Account;stringStr_Connection=D
16、ataSource=FIREFOXSQLEXPRESS;InitialCatalog=mydatabase;IntegratedSecurity=True;SqlConnectionSql_Connection=newSqlConnection(Str_Connection);Sql_Connection.Open();SqlCommandSql_Command=newSqlCommand();Sql_Command.Connection=Sql_Connection;/Sql_Command=Sql_Connection.CreateCommand();Sql_Command.Command
17、Type=System.Data.CommandType.Text;Sql_Command.CommandText=SQLCommand;SqlDataReaderreader=Sql_Command.ExecuteReader();reader.Read();StrUserName=reader.GetValue(reader.GetOrdinal(Account).ToString();StrPassword=reader.GetValue(reader.GetOrdinal(Password).ToString();StrEmployID=reader.GetValue(reader.GetOrdinal(“EmployeeID”).ToString()Label_Note.Text=StrUserName+n+StrPassword+n+StrEmployID+n;dataGridView2.Rows0.Cells0.Value=StrUserName;dataGridView2.Rows0.Cells1.Value=StrPassword;dataGridView2.Rows0.Cells2.Value=StrEmployID;Sql_Connection.Close();
限制150内