zoukankan      html  css  js  c++  java
  • 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(重要,要自己能手写)

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

  • 相关阅读:
    第08组 Alpha冲刺(1/6)
    第08组 团队Git现场编程实战
    第08组 团队项目-需求分析报告
    团队项目-选题报告
    第二次结对编程作业
    第一次结对编程作业
    第8组 团队作业
    第一次个人编程作业
    第一次博客作业
    Alpha 冲刺 (7/10)
  • 原文地址:https://www.cnblogs.com/zdpdsy/p/3427996.html
Copyright © 2011-2022 走看看