视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ADO.NET之8-数据读取器,DataReader---ShinePans
2020-11-09 14:58:40 责编:小采
文档


根据数据提供程序不同,DataReader可分为SqlDataReader,OleDbDataReader,OlbeDataReader和OracleDataReader等4大类 一个巧妙的比喻:如果数据库是水库,那么SqlConnection是进水头,SqlCommand是抽水机,SqlDataReader是出水的水管,SqlDataReader每次只能读取一条

根据数据提供程序不同,DataReader可分为SqlDataReader,OleDbDataReader,OlbeDataReader和OracleDataReader等4大类

一个巧妙的比喻:如果数据库是水库,那么SqlConnection是进水笼头,SqlCommand是抽水机,SqlDataReader是出水的水管,SqlDataReader每次只能读取一条记录,每当SqlDataReader调用Read方法就会从数据库得到一条记录,同时Read方法会返回False值,可以使用Wihle循环来调用SqlDataReader的Read方法,读取数据库中的记录,SqlDataReader的工作方式意味着,在读取数据库的时候要保持与数据库的连接,如果此时断开连接,数据会读取失败.

对于SqlCommand对象调用ExecuteScalar方法来查询表中记录的数量,SqlCommand对象调用ExecuteDataReader方法,查询表中所有的记录

源代码:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SQLTest
{
 class Program
 {
 static void Main(string[] args)
 {
 ///连接数据库
 string connection =
 "server=潘尚\\SQLEXPRESS;database=db_test;Trusted_Connection=true";
 SqlConnection sc = new SqlConnection(connection);
 // sc.ConnectionString = connection;
 try
 {
 sc.Open(); //打开数据库连接
 Console.WriteLine("已经打开数据库连接!");
 SqlCommand cmd = new SqlCommand("SELECT * FROM db_student", sc);
 SqlDataReader sdr = cmd.ExecuteReader(); //执行查找记录命令
 while(sdr.Read())
 {
 Console.WriteLine("{0}{1}{2}{3}", sdr[0], sdr[1], sdr[2], sdr[3]);
 }
//START:4.查询数据库记录//////////////////////////////////////////////////////////////
 /* SqlCommand cmd = new SqlCommand("SELECT count(*) FROM db_student", sc);
 int i = (int)cmd.ExecuteScalar();//执行查找记录的命令
 Console.WriteLine("表有{0}条数据", i.ToString()); */
//END:4.查询数据库记录////////////////////////////////////////////////////////////////
//START:3.修改数据库数据的代码////////////////////////////////////////////////////////
 /* SqlCommand cmd = new SqlCommand("UPDATE db_student SET student_grade=99 where student_name=@name", sc); //创建SqlCommand对象
 cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = "潘";
 int i = cmd.ExecuteNonQuery();
 if (i > 0) Console.WriteLine("修改成功!"); */
//END:3.修改数据库数据的代码/////////////////////////////////////////////////////////
//START:1.删除数据库记录代码段///////////////////////////////////////////////////////
 /* string cmdtext = "DELETE FROM db_student WHERE student_name=@name";
 SqlCommand cmd = new SqlCommand(cmdtext, sc);
 cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = "潘";
 int i = cmd.ExecuteNonQuery();
 if (i > 0) Console.WriteLine("删除记录成功!"); */
//END:1.删除数据库记录代码段/////////////////////////////////////////////////////////
//START:2.添加记录的代码///////////////////////////////////////////////////////////////
 /* SqlCommand cmd = new SqlCommand();//创建SqlCommand对象
 cmd.CommandType = CommandType.Text; //设置执行文本命令
 cmd.Connection = sc; //设置对象属性
 cmd.CommandText = 
 "INSERT INTO db_student(student_name,student_age,student_address,student_grade)VALUES(@name,@age,@address,@grade)";
 //添加参数并为参数赋值
 cmd.Parameters.Add("@name", SqlDbType.VarChar, 10).Value = "潘";
 cmd.Parameters.Add("@age", SqlDbType.Int).Value = 19;
 cmd.Parameters.Add("@address", SqlDbType.VarChar).Value = "武汉";
 cmd.Parameters.Add("@grade", SqlDbType.Int).Value = 100;
 int i = cmd.ExecuteNonQuery(); //执行数据库添加记录命令
 if (i > 0) Console.WriteLine("添加记录成功"); */ //控制台
输出添加记录 //END:2.添加记录的代码///////////////////////////////////////////////////////////////// } catch (Exception ex) { Console.WriteLine("打开数据库错误:{0}", ex.Message); } finally { sc.Close(); Console.WriteLine("数据库连接已关闭!"); } System.Console.ReadLine(); } } }
运行结果:


下载本文
显示全文
专题