C#连接数据库之Connection、Command、DataReader用法总结

简介: C#连接数据库之Connection、Command、DataReader用法总结

大多数应用程序都需要和数据库交互。同其他.NET开发语言一样,在C#语言中对数据库的访问是通过.NET框架中的ADO.NET来实现的。


ADO是一个COM组件库,主要包括Connection、Command、Recordset对象等。他所实现的功能包括,打开与数据库的连接,把一下数据选出来,放在记录集中,这些数据由字段组成,接着处理这些数据,并在服务器上进行更新,然后关闭连接。

image.png



Connection对象表示与与一个数据源的物理连接。Connection对象的方法比较简单:打开和关闭连接,改变数据库和管理事务。


Command对象表示在数据源上执行一条SQL语句或者存储过程。对于一个Connection对象来说,可以独立地创建和执行不同的Command对象。


DataReader是一种快速、低开销的对象,用于从数据源中获取仅转发的、只读的数据流,往往用来显示查询的结果。DataReader不能用代码直接创建,只能通过Command对象的ExecuteReader()方法来创建。


Connection连接字符串

Connection对象最重要的属性是连接字符串ConnectionString,也是Connection对象唯一的非只读属性。


//创建数据库连接字符串
public static string ConnString = @"Server =ZYB; Database =Login; User ID = sa;Password =123456";

创建并使用连接对象

Connection对象的构造函数有两个版本,有参与无参。


//using表示释放资源,有参
using (SqlConnection conn = new SqlConnection(ConnString))
 //无参
using (SqlConnection conn = new SqlConnection())

数据连接的两个方法是Open()和Colse()。

conn.Open();
conn.Close();

Command对象与DataReader对象

Command对象与DataReader对象是操作数据库数据的最直接的办法。Command对象根据程序员设置的SQL语句对数据库进行操作。返回需要返回结构及的SQL语句,Command对象的ExecuteReader方法生成一个DataReader对象,后者提供一个只读的游标,使程序员获取数据。


构造函数:

1.Command() ==>创建一个默认数据命令实例


2.Command(CommandText) ==>创建一个数据命令实例,CommandText属性为参数


3.Command(CommandText,conn) ==>创建一个数据命令实例,CommandText属性为参数,conn中指定连接的数据连接对象


4.Command(CommandText,conn,trans) ==>创建一个数据命令实例,CommandText属性为参数,conn中指定连接的数据连接对象,Transaction属性为参数trans中指定的事务对象


常用属性:

1.CommandText属性 ==>获取或设置对数据库执行的SQL语句


2.Connection属性 ==>获取或设置此Command对象使用的Connection对象的名称


常用方法:

1.ExecuteNonQuery() ==>返回 影响的记录行数(int类型)


2.ExecuteReader() ==>返回 DataReader(数据集对象),可以用fill()方法填充到dataset中来使用


3.ExecuteScalar() ==>返回 sql语句中第一行,第一列的值(object类型)


DataReader对象不能直接实例化、必须通过Command对象的ExecuteReader方法生成。


以下为实例

public Login.Model.UserInfo SelectUser(string userName, string password)
        {
            //实例化SqlConnection对象,实现数据库连接
            using (SqlConnection conn = new SqlConnection(DbUtil.ConnString)) //没有分号,释放资源
            {
                //实例化SqlCommadn对象,执行SQL命令(对数据库执行操作)
                SqlCommand cmd = conn.CreateCommand();
                //连接数据库中的User表(连接数据库的代码容易出错)
                cmd.CommandText = @"SELECT ID,UserName,Password,Email
                                    FROM USERS WHERE UserName=@Username AND Password=@Password";
                cmd.CommandType = CommandType.Text;
                //给命令对象添加参数,将userName的值传给@UserName
                cmd.Parameters.Add(new SqlParameter("@UserName",userName));
                cmd.Parameters.Add(new SqlParameter("@Password",password));
                //打开数据库连接,添加后解决conn关闭异常
                conn.Open();
                //若要创建 SqlDataReader,必须调用 SqlCommand 对象的 ExecuteReader 方法,而不要直接使用构造函数。
                SqlDataReader reader = cmd.ExecuteReader();
                //使用实体类传递信息,初始值为null
                Login.Model.UserInfo user = null;
                while (reader.Read())
                {
                    //判断有查询结果时
                    if (user==null)
                    {
                        user = new Login.Model.UserInfo();
                    }
                    //赋值
                    user.ID = reader.GetInt32(0);
                    user.UserName = reader.GetString(1);
                    user.Password = reader.GetString(2);  
                    if (!reader.IsDBNull(3))
                    {
                        user.Email = reader.GetString(3);
                    }
                }
                return user;
            }
        }
相关文章
|
1天前
|
NoSQL Shell MongoDB
NoSQL数据使用指令和引擎连接数据库实例
【5月更文挑战第8天】本文介绍了MongoDB的本地使用和常用操作,包括通过mongo shell连接数据库、显示数据库和集合,以及副本集设置。最后提到了MongoDB的日志功能和顶点集的使用,如capped collection的创建和管理。
16 3
|
1天前
|
Java 数据处理 流计算
实时计算 Flink版产品使用合集之可以通过JDBC连接器来连接Greenplum数据库吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
12 1
|
4天前
|
关系型数据库 MySQL 数据库
mysql 设置环境变量与未设置环境变量连接数据库的区别
设置与未设置MySQL环境变量在连接数据库时主要区别在于命令输入方式和系统便捷性。设置环境变量后,可直接使用`mysql -u 用户名 -p`命令连接,而无需指定完整路径,提升便利性和灵活性。未设置时,需输入完整路径如`C:\Program Files\MySQL\...`,操作繁琐且易错。为提高效率和减少错误,推荐安装后设置环境变量。[查看视频讲解](https://www.bilibili.com/video/BV1vH4y137HC/)。
24 3
mysql 设置环境变量与未设置环境变量连接数据库的区别
|
4天前
|
Oracle Java 关系型数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
16 6
|
4天前
|
SQL Java 关系型数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
|
4天前
|
SQL Java 数据库连接
Java数据库编程实践:连接与操作数据库
Java数据库编程实践:连接与操作数据库
12 0
|
4天前
|
SQL 存储 数据库连接
C#SQL Server数据库基本操作(增、删、改、查)
C#SQL Server数据库基本操作(增、删、改、查)
9 0
|
4天前
|
关系型数据库 Java 数据库
docker部署postgresql数据库和整合springboot连接数据源
docker部署postgresql数据库和整合springboot连接数据源
19 0
|
4天前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
|
4天前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。