zoukankan      html  css  js  c++  java
  • ADO。net学习笔记

    来源于网络

    1.       SqlConnection(DBConnection)  建立程序与数据库的链接 链接字符串有两种形式:

    //使用Windows验证  SSPI(安全支持提供程序接口)

    String theConnectionString =”Data Source=.express; Initial Catalog=DataBase; Intergrated Security=SSPI”;

    //使用SQL Server身份验证

    String theConnectionString=”Data Source=.express; Initial Catalog=DataBase; User ID=XX; Password=mypassword”;

       关于连接池(connection pooling):里面放了很多的连接,只要连接字符串的值不发生改变,Ado.net则会重用现有的链接,而不建立新的链接。其默认值为true,这也是为什么每次操作结束之后都调用一个conn.Close()方法:将连接返回连接池。

    2.       SqlCommand(DBCommand) 对数据库发出一些指令

    写好CommandText之后可以选择执行:

    *ExecuteNonQuary: 适用于不需要返回任何记录的情况,比如insert,update,delete

    *ExecuteReader :通过执行ConnectText,返回一组DataReader对象

    *ExecuteScalar :用于执行查询,返回查询结果所返回的数据集中的第一行第一列

    *ExecuteXmlReader:

    或者用Adapter来执行

    它用的比较多的属性有:

    *CommandText : *CommandType :*Connection : *Parameter :

    期中的CommandType共有三种:CommandType.Text/CommandType.StoredProcedure/

    CommandType.TableDirect

                     存储过程:theComand.CommandText=”存储过程名”

                               theComand.CommandType=CommandType.StoreProceduce

                               

    Parameter :向command对象添加参数  

     防止SQL注入:

     Using(SqlCommand cmd=new SqlCommand())

    {

     cmd.Connection=conn;

     cmd.CommandText=”delete customer where customerID=@id”;

     cmd.CommandType=System.Data.CommandType.Text;

     SqlParameter paramID=new SqlParameter(“@id”,textBox1.Text);

     cmd.Parameter.Add(paramID);

    }

    3.       DataAdapter  链接数据库与DataSet之间的桥梁

         SqlDataAdapter sda=new SqlDataAdapter(command): 在默认情况下,这个command会用于填充DataAdapter的SelectCommand属性,对于其他的属性,可以使用SqlCommandBuilder自动生成:

         SqlDataAdapter sda=new SqlDataAdapter(theCommand);

         SqlCommandBuilder theBuilder=new SqlCommandBuilder(sda);

         Adapter.Fill(ds,”DataTable”) : 使用SelectCommand属性获取对象,并将它填充到ds中的DataTable表中

         Adapter.FillSchema(ds1,SchemaType.Source,”DataTable”) 不放数据,而是把DataTable的框架拷贝给ds1

         Adapter.Update();将数据库中的数据更新到DataSet中

    4.       DataReader : 当只需要循环读取数据而不需要进行其他操作的时候可以使用这个。因为它在读取数据时限制了每次只能读取一笔数据,而且只能只读,所以使用起来不仅节省资源,而且效率很高。

         DataReader对象通过Command的ExecuteReader方法获得,一旦获得之后可以使用它的Read方法来获取数据

         SqlDataReader reader=new SqlDataReader();

         String output=String.Empty;

         If(reader.HasRows)

    {

    while(reader.Read()

    {Console.WriteLine(reader[“name”]/reader[1]).toString();}

    }

         Reader.Close();

       

    5.       DataSet :可以将它视为一个cache,将数据库中查询到的数据保留起来

    构造的时候顺序(列->表->cache):

    Private static DataSet BuildDataSet()

    {

    DataSet ds=new DataSet();

    DataTable dt=new DataTable(“Product”);

    DataColumn dcProID=new DataColumn(“ProductID”,typeof(int));

    DataColumn dcProName=new DataColumn(“ProductName”,typeof(string));

    dcProName.MaxLength=100;

    DataColumn dcReleaseDate=new DataColumn(“ReleaseDate”,typeof(DataTime));

    //添加列

    Dt.Column.Add(dcProID);

    Dt.Column.Add(dcProName);

    Dt.Column.Add(dcReleaseDate);

    //添加约束:

    Dt.PrimaryKey=new DataColumn[]{dcProID };

    Dt.Constraints.Add(new UniqueConstraint(dcProName));

    //添加元祖:

    Dt.Raws.Add(new object[]{1,””,DataTime.Now});

    Ds.Table.Add(dt);

    Return ds;

    }

    若有多张表的话,还可以创建DataRelation  参考:http://blog.sina.com.cn/s/blog_55a69f170100l16k.html

    删除DataTable中的一行:

    Public void DeleteCustomer(int id)

    {

    DataSet ds=new DataSet();

    DataRow[] results=ds.Table[“表名”].Select(“ID=”+id.ToString());

    If(results.length>0)

    {result[0].Delete();} //Delete:给行标记上删除记号,等最后操作的时候删除,区分与Remove()的区别

    Ds.AcceptChanges();

    }

  • 相关阅读:
    C# Thread.Sleep 卡死的问题解决方法
    GridView多行显示 TableAdapter没有Update 问题
    python zlib 压缩 解压 文件夹
    17、【Python】mac安装多个版本的python
    18、【常见算法】二叉树的遍历
    29、【C++基础】内存泄露
    17、【常见算法】topN问题
    16、【常见算法】查找斐波那契数列的第N项
    15、【常见算法】实现sqrt函数
    14、【常见算法】数组分组排序
  • 原文地址:https://www.cnblogs.com/qiushuixizhao/p/3236618.html
Copyright © 2011-2022 走看看