介绍和连接

介绍

ADO.NET 是.NET平台下操作数据库相关模块的统称。
我们借助它操作数据库,完成增删改查等基础操作;同时也可以执行SQL语句、调用SQL函数、执行存储过程等。

绝大多数大型业务系统都离不开数据库。如果需要将数据持久化存储,并且实现高效查询,就需要使用数据库。

ADO.NET核心提供一系列对象,这些对象封装好了数据库操作相关方法:

  • Connection:建立与数据库的连接
  • Command:执行SQL相关命令
  • DataSet:内存中的数据集合,是数据库的抽象。操作DataSet如同操作离线数据库,内部包含DataTable(数据表)、DataRow(数据表中的单行记录)
  • DataReader:只读向前的数据读取器
  • DataAdapter:数据适配器

掌握ADO.NET,我们才能开发功能完善的业务系统,网站等应用也普遍依赖数据库,建议认真学习。

像EF、iBatis、NHibernate、Linq to Entities这类ORM框架,底层全部基于ADO.NET实现。你也可以基于ADO.NET自主开发ORM框架。

数据库连接

Connection用于建立程序与数据库之间的连接,是执行所有数据库操作的桥梁。

.NET 提供 SqlConnection 类实现数据库连接,所在命名空间:System.Data.SqlClient,程序集:System.Data.dll
绝大多数和数据库交互的相关类型,都封装在这个dll中。

建立连接前,需要先准备数据库连接字符串,实例化SqlConnection对象时需要传入该字符串。

SqlConnection conn = new SqlConnection(connectionString);Code language: JavaScript (javascript)

连接字符串本质就是普通字符串,使用string类型存储。

两种登录方式连接字符串示例
  1. SA账号密码登录(SQL Server身份验证)
"Data Source=.;Initial Catalog=数据库名;User ID=sa;pwd=密码;"Code language: JSON / JSON with Comments (json)
  1. Windows身份验证登录
Data Source=.;Initial Catalog=数据库名;Integrated Security=TrueCode language: PHP (php)

连接字符串由多个配置项组成,使用英文分号分隔,格式为 键=值
参数说明:

  • Data Source:数据库服务器地址。本地数据库可用 .localhost127.0.0.1;远程服务器填写IP或域名。
  • Initial Catalog:目标数据库名称
  • User ID:数据库登录账号
  • pwd:数据库登录密码

补充:User IDpwd 不是必填项。使用Windows登录模式时,配置 Integrated Security=True 启用集成安全验证,无需填写账号密码。

C#中如何连接数据库

private void button1_Click(object sender, EventArgs e)
{
    string connectionString = "Data Source=.;Initial Catalog=db;User ID=sa;pwd=123321;";
    // using语句内实例化连接对象,代码块结束自动释放资源,无需手动Close()
    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        // 打开数据库连接
        conn.Open();
        // 在这里编写数据库操作代码
    }
}Code language: JavaScript (javascript)

说明

  1. conn.Open()打开数据库连接,必须调用该方法才会真正建立网络连接。
  2. using 语法优势:离开using代码块范围后,自动调用资源释放,关闭数据库连接,避免连接泄漏。
  3. 不使用using时,操作完成后需要手动调用 conn.Close() 关闭连接。

其他使用

//conn.Open();                // 打开连接
//conn.Close();               // 手动关闭连接
//conn.ConnectionString = connectionString; // 动态赋值连接字符串
//conn.ConnectionString = "";              // 清空连接字符串Code language: JSON / JSON with Comments (json)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注