命名空间 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等。