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月前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
126 68
|
29天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
44 3
|
2月前
|
关系型数据库 MySQL 数据库连接
DBeaver如何连接一个数据库
【10月更文挑战第27天】DBeaver 是一款功能强大的通用数据库管理工具,支持多种主流数据库。本文介绍了使用 DBeaver 连接数据库的基本步骤,包括下载安装、创建新连接、选择数据库类型、配置连接参数、测试连接以及最终连接到数据库。详细的操作指南帮助用户轻松管理和操作数据库。
223 9
|
29天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
28 1
|
29天前
|
Java 数据库连接 数据库
Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销
本文深入探讨了Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销,显著提升了系统的响应速度和吞吐量。文章介绍了连接池的工作原理,并以HikariCP为例,展示了如何在Java应用中使用连接池。通过合理配置和优化,连接池技术能够有效提升应用性能。
44 1
|
2月前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
1月前
|
SQL 关系型数据库 数据库连接
"Nacos 2.1.0版本数据库配置写入难题破解攻略:一步步教你排查连接、权限和配置问题,重启服务轻松解决!"
【10月更文挑战第23天】在使用Nacos 2.1.0版本时,可能会遇到无法将配置信息写入数据库的问题。本文将引导你逐步解决这一问题,包括检查数据库连接、用户权限、Nacos配置文件,并提供示例代码和详细步骤。通过这些方法,你可以有效解决配置写入失败的问题。
56 0
|
19天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1
|
22天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
36 4
|
28天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
160 1