ado.net总结

ADO.NET
1->什么是ADO.NET,能做什么
一套操作数据库的类库
你会写什么SQL语句,ADO.NET就能做什么

2-> 四个对象和四个模型
  1->四个对象
    连接对象 Connection系对象
    执行对象 Command系对象
    适配器对象 DataAdapter系对象
    读取器对象 DataReader系对象

  2->四个模型
    1->执行非查询语句的模型 ExecuteNonQuery()
      执行增删改,返回所影响的行数。
      若执行其他,则返回-1
    2->执行查询语句的模型 ExecuteScalar()
      执行查询语句,返回第一行第一列的数据 (object)
      如果不存在,则返回null
    3->读取器的模型 ExecuteReader()
      读取所有数据 返回的是一个SqlDataReader对象
    4->包工头模型 SqlDataAdapter
      什么东西都能帮你做

3->其他知识点
配置文件app.config 处理

<add name="connect",connectionString="Data Source=.; Initial Catalog=zdp;Integrated Security=true">;

SqlHelper(重要,要自己能手写)
参数化查询(防止注入攻击,本质就是存储过程)

string sql="select count(*) from Login where uid=@uid and pwd=@pwd";
SqlParameter []p={
new SqlParameter("@uid",txtUserName.text),
new SqlParameter("@pwd",txtUserPwd.text)
};

4->连接对象
  1->命名空间
    System.Data;
    System.Data.SqlClient;
  2->连接对象 SqlConnection
    

 1      //1.windows验证
 2     "Data Source=服务器名称;Initial Catalog=数据库名;Integrated Security=true"
 3     //Data Source=.; Initial Catalog=zdp;Integrated Security=true
 4 
 5     //2.sa身份验证
 6     "Data Source=服务器名称;Initila Catalog=数据库名;User Id=sa; PassWord=123456"
 7     //Data Source=.; Initial Catalog=zdp;User Id=sa;PassWord=123456
 8 
 9     using(SqlConnection con=new SqlConnection(connect))
10     /*注意1.连接对象不能重复打开 ,当可以重复关闭
11     也就是con.Open()不能写多次*/ 

 

  

  3->执行对象 SqlCommand
   

  4->适配器对象 SqlDataAdapter
  见下面代码

  5->读取器对象 SqlDataReader
  见下面代码
  注意事项
  1-> 返回reader后数据在数据库服务器缓存
  2->使用DataReader的时候必须保证Connection为Open状态
  3->reader每次读取一条就释放一条所以只能向前不能后退。但是读取速度很快
  如果返回多个结果集 ,用NextResult()方法
  4->带参数的SQL语句的一个问题
  

string sql="insert into tess22(Age) values(@age)"
//参数不能直接用0 ,如果用0的话,会调用另一个重载函数
//SqlParameter(string parameterName,SqlDbType dbtype),所以显示转换为object;
sqlParameter p=new SqlParameter("@age",(object)0);

  

 

 1 public static class SqlHelper
 2     {
 3         public string str=ConfigurationManager.ConnectionStrings["connect"].ConnectionString;
 4         public int ExecuteNonQuery(string sql,CommandType type,params SqlParameter[]p)
 5         {
 6             int r=0;
 7             using(SqlConnection con=new SqlConnection(str))
 8             {
 9                 using(SqlCommand cmd =new SqlCommand(sql,con))
10                 {
11                     if(p!=null)
12                     cmd.Parameters.AddRange(p);
13                     cmd.CommandType=type;
14                     con.Open();
15                     r=cmd.ExecuteNonQuery();
16                     cmd.Parameters.Clear();
17                 }
18             }
19             return r;
20         }
21         public object ExecuteScalar(string sql,CommandType type,params SqlParameter[] p)
22         {
23             object obj=null;
24             using(SqlConnection con=new SqlConnection(str))
25             {
26                 using(SqlCommand cmd=new SqlCommand(sql,con))
27                 {
28                     if(p!=null)
29                     cmd.Parameters.AddRange(p);
30                     cmd.CommandType =type;
31                     con.Open();
32                     obj=cmd.ExecuteScalar();
33                     cmd.Parameters.Clear();
34                 }
35             }
36         }
37         public SqlDataReader ExecuteReader(string sql,CommandType type,params SqlParameter [] p)
38         {
39             SqlDataReader Reader=null;
40             SqlConnection con=new SqlConnection(str);
41             using(SqlCommand cmd=new SqlCommand(sql,con))
42             {
43                 if(p!=null)
44                 cmd.Parameters.AddRange(p);
45                 cmd.CommandType=type;
46                 try
47                 {
48                     con.Open();
49                     Reader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
50                     return Reader;
51                 }
52                 catch(Exception)
53                 {
54                     con.Close();
55                     con.Dispose();
56                     throw;
57                 }
58             }
59         }
60         public DataTable GetTalbe(string sql,CommandType type,params SqlParameter[]p)
61         {
62             using(SqlDataAdapter sd=new SqlDataAdapter(sql,con))
63             {
64                 DataSet ds=new DataSet();
65                 if(p!=null)
66                 sd.SelectCommand.Parameters.AddRange(p);
67                 sd.SelectCommand.CommandType=type;
68                 sd.Fill(ds);
69                 return ds.Tables[0];
70             }
71         }
72         //调用方法
73         //int r=SqlHelper.ExecuteNonQuery(sql,CommandType.text,p);
74     }
SqlHelper(重要,要自己能手写)

 

    以上仅是个人的总结,希望对大家有帮助,如有错误还请各位大神指点指点啊。

posted @ 2013-11-17 17:05  鹏程万里-zdp  阅读(541)  评论(0编辑  收藏  举报