命名空间 System.Data.SqlClient的主要类:
SqlCommand
SqlConnection
SqlDataAdapter
SqlDataReader
一、Sqlcommmand的用法
关于Sqlcommmand的方法
属性 |
说明 |
ActiveConnection | 设定要透过哪个连接对象下命令 |
CommandBehavior | 设定Command对象的动作模式 |
CommandType(Text\TableDirect\StoredProcedure) | 命令类型(SQL语句,完整表达句,存储过程) |
CommandText | 要下达至数据源的命令 |
CommandTimeout | 出错时等待时间 |
Parameters | 参数集合 |
RccordsAffected | 受影响的记录数 |
样例代码:
private static void Only_Sqldatareader(){SqlConnection cn1 = new SqlConnection("server=.\\SQLEXPRESS;database=test3;uid=zy;pwd=123456");cn1.Open();string sql1 = "select * from test";SqlCommand cmd1 = new SqlCommand(sql1, cn1);//cmd1.Parameters();可以添加形参的传递SqlDataReader dr = cmd1.ExecuteReader();while (dr.Read()){Console.WriteLine("这是ID={0}", dr[0].ToString());Console.WriteLine("这是专业={0}", dr[1].ToString());}}
二、SqlConnection---对于数据库的连接
Sqlserver数据库连接方式有多种,这里只介绍最常用的通过SqlConnection和Sqlserver数据库用户名和密码验证来进行操作数据库。数据库连接有两种方法一种是windows的登陆模式另一种是sqlserver的登陆模式
String ConnectionString =”server=(local); Initial Catalog =stu; ”;SqlConnection conn=new SqlConnection(); conn.ConnectionString=ConnectionString;conn.Open();
Open和Close方法分别用来打开和关闭数据库连接,无参无返回值。
Open方法:使用ConnectionString所指定的属性设置打开数据库连接
Close方法:关闭与数据库的连接,这是关闭任何打开连接的首选方法
如果不知道Connection对象在某个时候是打开是关闭时,可以检查Connection对象的State属性
三、Sqldatareader
类似于指针的形式读取数据库里面的记录,通过与Sqlcommmand结合,通过while来进行数据的遍历输出
代码
/// <summary>/// 时间:2018-1-27/// 内容:运用Sqlcommmand来进行数据库数据的插入数据,同样的通过sql语句来进行对数据库的增删查改/// </summary>/// <param name="cn"></param>/// <param name="sql"></param>private static void Command_with_Sqldatareader(out SqlConnection cn, out string sql){string myconnection = "server=.\\SQLEXPRESS;database=test3;uid=zy;;pwd=123456";//这是注释--连接数据库的过程cn = new SqlConnection(myconnection);cn.Open();//sql语句的实现sql = "insert into test values(1234,'信息计算111')";//sql语句的实现string sql_thrid = "delete from test where 专业='信息计算111'";string sql_fourth = "seelct *from test";string sql_5 = "update test set 专业='信息计算'where ID=1";SqlCommand cmd = new SqlCommand(sql, cn);//对数据库发送请求try//try catch 的结构{if (cmd.ExecuteNonQuery() == 1)//返回请求影响 的行数{Console.WriteLine("成功\n");}else{Console.WriteLine("失败\n");}}catch (Exception e){Console.WriteLine(e);}finally//最后关闭连接{cn.Close();}Console.Read();}
四、SqlDataAdapter-
相当于Dataset与数据库的桥梁,首先SqlDataAdapter通过与sql语句结合读取数据库的信息,然后再填充到Dataset中去。
直接样例代码:
private static void Dataset_with_DataAdapter(){/*连接数据库的语句*/SqlConnection cn1 = new SqlConnection("server=.\\SQLEXPRESS;database=test3;uid=zy;pwd=123456");//sql登陆模式/*打开连接*/cn1.Open();/*查询语句*/string sql1 = "select *from test";/*对数据源进行处理*/SqlDataAdapter sda = new SqlDataAdapter(sql1, cn1);/*填充到dataset容器中*/DataSet c = new System.Data.DataSet();sda.Fill(c, "tabel");//1对于dataset 含有多种表的情况,遍历每一个表foreach (DataTable table in c.Tables){foreach (DataRow row in table.Rows){foreach (object field in row.ItemArray){Console.WriteLine(field);}//相应的行处理}//相应的表处理}//2对于特定的表来进行遍历foreach (DataRow mDr in c.Tables[0].Rows){foreach (DataColumn mDc in c.Tables[0].Columns){ /*输出语句*/Console.WriteLine(mDr[mDc].ToString());}}//try catch结构,对Dataset里面的内容进行修改并重新写会数据库try{//修改特定的数据c.Tables[0].Rows[0][1] = "信息学院";/* //删除Dataset里面的特定行c.Tables[0].Rows.RemoveAt(1);//删除Data里面的特定的列c.Tables[0].Columns.RemoveAt(1);*/SqlCommandBuilder cmdBld = new SqlCommandBuilder(sda);//重新写回数据库的语句sda.Update(c.Tables[0]);Console.Read();}catch (Exception x){Console.WriteLine(x);}finally{cn1.Close();}}
五、Dataset的使用
DataSet类:表示数据在内存中的缓存,对应于一个关系数 据库的结构。由一组DataTable对象组成。
DataTable类:表示内存中数据的一个表,对应于数据库中的表,由若干行和列组成。
DataRow类:表示DataTable中的一行数据,对应于数据库中表的一行。
DataColumn类:表示DataTable中列的结构,对应于数据库中表的一列。
DataRelation类:表示两个DataTable对象之间的关联,如父/子关系,此关系类似于主键/外键关系。
Constraint类:表示可在一个或多个DataColumn对象上强制的约束。约束是用于维护DataTable中数据的完整性的规则。
其他类:如DataColumnCollection、 ConstraintCollection、
DataTableCollection、
DataRelationCollection等。