DBHelper
原文:百度百科
c#
数据查询输出
2012-07-17 17:07
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); //
创建适配器
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决