zoukankan      html  css  js  c++  java
  • 有关网站中操作数据库的几种方法的使用情况

    c#

    数据查询输出

     

     

    1

    、使用

    ExecuteReader()

    操作数据库

    2、使用ExecuteNonQuery()操作数据库3、使用ExecuteScalar()操作数据库4、使用DataSet

    数据集插入记录、更新数据。

    1、使用ExecuteReader()操作数据库,执行查询操作的利器

     

    ExecuteReader相比与DataSet而言,DataReader

    具有较快的访问能力,并且能够使用较少的服务器资源。DataReader对象提供了“游标”形式的读取方法,当从结果中读取了一行,则“游标”会继续读取到下一行。通过Read方法可以

    判断数据是否还有下一行,如果存在数据,则

     

    继续运行并返回true,否则返回false。 DataReader可以提高执行效率,基于序号的查询可以使用DataReader.

    当使用ExecuteReader()操作数据库时,会遇到知道某列的名称而不知道某列的号的情况,这种情况可以通过使用

    DataReader对象的GetOrdinal()方法获取相应的列号。此方法接收一个列名并返回此列名所在的列号。

    示例代码:

    string str = "server='(local)';database='mytable';uid='sa';pwd='sa'"; //创建连接字串SqlConnection con = new SqlConnection(str); //创建连接对象con.Open(); //打开连接

    string strsql = "select * from mynews where id=1 order by id desc"; //创建执行SQL

    语句SqlCommand cmd = new SqlCommand(strsql, con); //创建

    Command对象SqlDataReader rd = cmd.ExecuteReader(); //

    创建DataReader对象int id = rd.GetOrdinal("title"); // 使用GetOrdinal方法获取title列的列号

    while (rd.Read()) //遍历DataReader对象{ Label1.Text = "

    新闻

    id是" + rd["id"]; //输出对象的值} 使用

    ExecuteReader()

    操作数据库,通常情况下是使用

    ExecuteReader()

    进行数据库查询操作,使用ExecuteReader()查询数据库能够提升查询效率,而如果需要进行数据库事务处理的话,ExecuteReader()方法并不是理想的选择。

    2、使用ExecuteNonQuery(),ExecuteScalar()操作数据库,执行增删改操作的利器

    ExecuteNonQuery()通常情况下为数据库事务处理的首选,当需要执行插入、删除、更新等操作时,首选 ExecuteNonQuery(),ExecuteNonQuery()

    执行成功是返回的是一受影响的行数,对于“CREATE TABLE”和“DROP TABLE”语句,返回值为0,而对于所有其他类型的语句,返回值为-1。ExecuteNonQuery()操作数据时,可以不使用DataSet直接更改数据库中的数据。ExecuteScalar()

    方法也用来执行SQL语句,但是ExecuteScalar()执行SQL语句后的返回值与 ExecuteNonQuery()并不相同,ExecuteScalar()方法的返回值

    的数据类型是Object类型。如果执行的SQL

    语句是一个查询语句(SELECT),则返回结果是查询后的第一行的第一列,如果执行的SQL语句不是一个查询语句,则会返回一个未实例化的对象,必须通过类型转换来 

    显示。通常情况下ExecuteNonQuery()操作后返回的是一个值,而ExecuteScalar()操作后则会返回一个对象,ExecuteScalar()经常使用于当需要返回单一值时的情况。

    例如当插入一条数据信息时,常常需要马上知道刚才插入的值,则可以使用ExecuteScalar()方法。

     示例代码:string str = "server='(local)';database='mytable';uid='sa';pwd='sa'"; //创建连接字串SqlConnection con = new SqlConnection(str); //创建连接对象con.Open(); /打开连接

    string strsql = "insert into mynews values ('刚刚插入的id是多少?') SELECT @@IDENTITY as 'bh'"; //插入语句SqlCommand cmd = new SqlCommand(strsql, con); //执行语句Label1.Text = "刚刚插入的行的id是" + cmd.ExecuteScalar(); //返回赋值上述代码使用了SELECT @@IDENTITY语法获取刚刚执行更新后的

    id值,然后通过使用ExecuteScalar()方法来获取刚刚更新后第一行第一列的值。

    4、使用DataSet数据集插入记录、更新数据。使用

    INSERT语句能够完成数据插入,使用

    DataSet对象也可以完成数据插入。为了将数据库的数据填充到DataSet中,则必须先使用DataAdapter对象的方法实现填充,当数据填充完成后,开发人员可以将记录添加到

    DataSet对象中,然后使用Update

    方法将记录插入数据库中。使用DataSet更新记录的步骤如下

    所示:q 创建一个

    Connection对象。q 创建一个DataAdapter

    对象。q 初始化适配器。q 使用数据适配器的Fill方法执行SELECT命令,并填充DataSet。

     

    q 使用DataTable对象提供的NewRow方法创建新行。q 

    将数据行的字段设置为插入的值。q 使用DataRowAdd类的Add

    方法将数据行添加到数据表中。q 把DataAdapter类的InsertCommand属性设置成需要插入记录的INSERT

    语句。q 使用数据适配器提供的

    Update

    方法将新记录插入数据库。q 使用DataSet类提供的AcceptChanges方法将数据库与内存中的数据保持一致。

    Insert 示例代码:

    string str = "server='(local)';database='mytable';uid='sa';pwd='sa'"; //创建连接字串

    SqlConnection con = new SqlConnection(str); //创建连接对象

    con.Open(); //打开连接 

    string strsql = "select * from mynews"; // 编写SQL语句

    SqlDataAdapter da = new SqlDataAdapter(strsql, con); //创建适配器

    SqlCommandBuilder build = new SqlCommandBuilder(da); //构造SQL语句

    DataSet ds = new DataSet(); // 创建数据集

    da.Fill(ds, "datatable"); //填充数据集

    DataTable tb = ds.Tables["datatable"]; //创建表

    tb.PrimaryKey = new DataColumn[] { tb.Columns["id"] }; //创建表的主键

    DataRow row = ds.Tables["datatable"].NewRow(); //创建DataRow 

    row["title"] = "使用DataSet插入新行"; //赋值新列

    row["id"] = "15"; 

    ds.Tables["datatable"].Rows.Add(row);  

    da.Update(ds, "datatable");  

    Update示例代码:

    string str = "server='(local)';database='mytable';uid='sa';pwd='sa'"; //创建连接字串

    SqlConnection con = new SqlConnection(str); //创建连接对象

    con.Open(); //打开连接

    string strsql = "select * from mynews"; // 编写SQL语句

    SqlDataAdapter da = new SqlDataAdapter(strsql, con); //创建适配器

    SqlCommandBuilder build = new SqlCommandBuilder(da); //构造SQL语句

    DataSet ds = new DataSet(); // 创建数据集

    da.Fill(ds, "datatable"); //填充数据集

    DataTable tb = ds.Tables["datatable"]; //创建表

    tb.PrimaryKey = new DataColumn[] { tb.Columns["id"] }; //创建表的主键

    DataRow row = tb.Rows.Find(1); 

    row["title"] = "新标题"; 

    da.Update(ds, "datatable");

  • 相关阅读:
    对象的绑定方法
    属性查找
    定制对象独有特征
    类和对象
    面向对象编程介绍
    面向对象程序设计的由来(历史故事)
    基于socketserver实现并发的socket套接字编程
    基于UDP协议的socket套接字编程
    解决粘包问题
    copy 合并
  • 原文地址:https://www.cnblogs.com/zhangjinpeng/p/4076221.html
Copyright © 2011-2022 走看看