C#使用ADO.NET访问数据库

您所在的位置:网站首页 数据库的使用方法 C#使用ADO.NET访问数据库

C#使用ADO.NET访问数据库

2024-03-06 06:58| 来源: 网络整理| 查看: 265

文章目录 C#使用ADO.NET访问数据库1.常用的数据库访问技术2.认识ADO.NET技术1.ADO.NET的命名空间及导入2.ADO.NET的工作原理及访问架构1.各种数据库/数据源2..NET数据提供程序3.数据集DataSet 3.客户端应用程序基于ADO.NET的两种数据访问模式1.通过DataSet访问数据(数据集断开式数据访问模式)2.通过DataReader对象访问数据(连接式数据访问模式)3.ADO.NET访问sql的步骤1.使用连接对象SqlConnection连接数据源2.打开连接3.操作数据库4.关闭连接 4.具体示例及完整代码1.“删除”按钮的Click事件代码:2.使用SqlCommand对象的ExecuteReader() 方法读取单行数据。该程序根据用户指定的学生学号,查找与该学号对应的学生姓名、性别和身高,并将结果显示在页面上3.使用SqlDataAdapter和DataSet对象读取数据。该程序将用表格的形式显示stu表中全体学生的详细信息

C#使用ADO.NET访问数据库 1.常用的数据库访问技术 开放式互连技术(ODBC)对象链接与嵌入式数据库技术(OLE DB)Java数据库互连技术(JDBC)ActiveX数据库对象技术(ADO)ADO.NET技术等 2.认识ADO.NET技术

ado.net是一组用于和数据源进行交互的面向对象类库,用于实现用户到SQL Server等数据源的连接,为用户利用SQL语句实现对数据源中数据的查询、处理和更新提供支持。

1.ADO.NET的命名空间及导入

Microsoft将数据类划分成不同的命名空间。在ADO.NET中,主要涉及三个命名空间:

System.Data System.Data.SqlClient System.Data.Oledb

用using 导入命名空间,例:

using System.Data; 2.ADO.NET的工作原理及访问架构

ADO.NET是.NET框架中的数据访问模型,包含了两个核心组件:

数据提供程序.NET Framework

提供程序负责与物理数据源的连接,用于实现对底层数据源的访问

数据集DataSet

代表实际的数据

ADO.NET的三层数据访问架构:

各种数据库/数据源 .NET数据提供程序 数据集DataSet

1.各种数据库/数据源

是指物理层的数据存储,可以是SQL Server、Oracle、MySQL、Access等物理数据库/数据源。

2…NET数据提供程序

在.NET数据库应用程序中,用户通过一个.NET的数据提供者同数据库交互

Connection 事务:建立与特定数据源的连接 Command 参数:对数据源执行操作命令(增删改查) DataReader 以顺序且只读的方式从数据源中读取数据 DataAdapter 数据适配器,使用Command对象对数据源执行SQL命令,将数据从数据库读到数据集 * SelectCommand * InsertCommand ======填充=====> DataSet * DeleteCommand * UpdateCommand 3.数据集DataSet

可把数据集DataSet看成是内存中的数据库,是专门用来处理从数据库中读出的数据的。

在从数据库完成数据查询后,查询出的数据就存放在DataSet中,它是从数据源中查询到的数据在内存中驻留的表示形式,可以把它看成是内存中的数据库。

因此,DataSet是不依赖于数据库的独立数据集合,即使断开数据链路,或者关闭数据库,DateSet依然是可用的。

3.客户端应用程序基于ADO.NET的两种数据访问模式 1.通过DataSet访问数据(数据集断开式数据访问模式)

是指不直接对数据库进行操作,而是先实现数据库连接,再通过DataAdapter填充DataSet对象,然后客户端再通过读取DataSet来获取需要的数据。同理,在更新数据库中的数据时,也是先更新DataSet,然后再通过DataAdapter来更新数据库中对应的数据。

2.通过DataReader对象访问数据(连接式数据访问模式)

是指客户在操作过程中,与数据库的连接是打开的,使用Command对象对数据库的相关操作,使用DataReader对象以顺序方式读取数据。

3.ADO.NET访问sql的步骤 1.使用连接对象SqlConnection连接数据源 // 定义连接字符串 string str = "Server=DESKTOP-4HSQLSI\\LRC;database=cs172;integrated security=true"; // string str = "Server=DESKTOP-4HSQLSI\\LRC;database=cs172;uid=登录名;pwd=密码"; // stirng str = "Data Source=DESKTOP-4HSQLSI\\LRC;Initial Catalog=cs172;integrated security=true"; /** * Server等同于Data Source * database等同于Initial Catalog * integrated security=true 表示采用信任模式连接(登录数据库服务器为window身份验证) * uid=登录名;pwd=密码(登录数据库服务器为SQL server身份验证) * DESKTOP-4HSQLSI\\LRC 服务器名称 * cs172 要连接的数据库名称 */ // 定义数据库连接对象并初始化 SqlConnection sqlConn = new SqlConnection(str); 2.打开连接 sqlConn.Open(); 3.操作数据库 SqlCommand对象的常用属性和方法 属性或方法说明CommandText设置或获取在数据源上执行的SQL语句或存储过程名Connection设置或返回与Command相关的Connection对象CreateCommand()用于建立sqlCommand对象ExecuteReader()执行CommandText中的SQL查询语句,查询值返回到DataReader对象ExecuteScalar()返回单个值,如求和、求最大值等SQL聚合函数ExecuteNonQuery()执行增、删、改等无返回值的SQL操作

增删改:建立SqlCommand对象,执行SQL语句或存储过程对数据进行增删改。

SqlCommand对象用于通过Connection对数据库下达操作数据库的命令

// 定义SQL语句字符串(增删改) string sql = string.Format("delete from cenJi where xueHao='{0}'", xueHao.Text.Trim()); // 定义数据库命令对象cmd并初始化 SqlCommand cmd = new SqlCommand(sql,sqlConn); // 执行命令 cmd.ExecuteNonQuery();

查询:建立SqlCommand对象,执行SQL语句或存储过程后对返回的“结果”进行操作:

方法一:使用数据读取器对象DataReader直接一行一行地读取数据集;

遍历DataReader中的记录

Command对象在执行ExecuteReader()方法后,在返回记录的同时,将产生一个数据读取器对象DataReader来指向所返回的记录集,利用DataReader就可以读取返回的记录。

DataReader对象用于以最快的速度检索并检查查询所返回的行,返回的记录是一种只读的且指针只能前移的数据流

// 定义一个数据读取器对象 SqlDataReader sqlData = command.ExecuteReader(); //处理数据读取器sreader中的数据 // Read()使sqlDataReader移到下一条记录,SqlDataReader的默认位置在第一条记录前面 if (sqlData.Read()) { xinMin.Text = sqlData["xinMin"].ToString(); xinBie.Text = sqlData["xinBie"].ToString(); senGao.Text = sqlData["senGao"].ToString(); } //关闭DataReader对象 sqlData.Close(); DataReader对象的常用属性和方法 属性或方法说明FieldCount当前行中的列数ItemDataReader中列的值HasRows指出DataReader是否包含一行或多行Close()关闭DataReader对象GetName()获取指定列的名称GetValue()获取指定序号处的列的值Read()使DataReader移到下一条记录,返回True表示还有下一条数据,否则表示数据读取完毕 方法二:使用数据集对象DataSet和数据适配器对象DataAdapter来访问数据库。 // sql语句 string sql = "select *from xueSen"; //定义一个数据库适配器对象 SqlDataAdapter sda = new SqlDataAdapter(sql, sqlConn); //定义一个数据集对象 DataSet dataSet = new DataSet(); //将查询结果填充数据集对象,并用一个表的别名"ds"标记 sda.Fill(dataSet, "ds"); //指定dateGridView的数据源,dataGridView是以表格方式显示数据的控件 dataGridView1.DataSource = dataSet; dataGridView1.DataMember = "ds";

​ DataAdapter对象(数据适配器对象),是DataSet对象与数据源之间的桥梁,负责从数据源中检索数据,并把检索到的数据填 充到DataSet对象中的表;同时,也把用户对DataSet对象的更改写到数据源中。

​ DataAdapter一般要与DataSet共同使用,来操作数据库中的数据。

DataGridView控件的常用属性 属性说明Columns所有列的集合Rows所有行的集合DataSource数据源DataMember显示的表的名称RowCount获取或设置DataGridview中的显示行ReadOnly是否可编辑单元格SelectedIndex获取选中行的索引SelectedRow获取选中的行 4.关闭连接 //关闭与数据库的连接 sqlConn.Close(); 4.具体示例及完整代码 通过vs自带的window窗体来实现 window窗体 1.“删除”按钮的Click事件代码: private void button1_Click(object sender, EventArgs e) { // 定义连接字符串 string str = "Server=DESKTOP-4HSQLSI\\LRC;database=cs172;integrated security=true"; // string str = "Server=DESKTOP-4HSQLSI\\LRC;database=cs172;uid=登录名;pwd=密码"; // stirng str = "Data Source=DESKTOP-4HSQLSI\\LRC;Initial Catalog=cs172;integrated security=true"; /** * Server等同于Data Source * database等同于Initial Catalog * integrated security=true 表示采用信任模式连接(登录数据库服务器为window身份验证) * uid=登录名;pwd=密码(登录数据库服务器为SQL server身份验证) * DESKTOP-4HSQLSI\\LRC 服务器名称 * cs172 要连接的数据库名称 */ // 定义数据库连接对象并初始化 SqlConnection sqlConn = new SqlConnection(str); sqlConn.Open(); try { // 定义SQL语句字符串(增删改) string sql = string.Format("delete from cenJi where xueHao='{0}'", xueHao.Text.Trim()); // 定义数据库命令对象cmd并初始化 SqlCommand cmd = new SqlCommand(sql,sqlConn); // 执行命令 cmd.ExecuteNonQuery(); MessageBox.Show("删除成功!", "提示"); } catch(Exception i) { MessageBox.Show(i.ToString(), "错误"); } sqlConn.Close(); } 2.使用SqlCommand对象的ExecuteReader() 方法读取单行数据。该程序根据用户指定的学生学号,查找与该学号对应的学生姓名、性别和身高,并将结果显示在页面上 private void Search_Click(object sender, EventArgs e) { string str = "Server = DESKTOP-4HSQLSI\\LRC;database=cs172;integrated security=true"; SqlConnection sqlConnection = new SqlConnection(str); sqlConnection.Open(); try { string sql = "select xinMin,xinBie,senGao from xueSen where xueHao='" + xueHao.Text.Trim() + "'"; // string sql = string.Format("select xinMin,xinBie,senGao from xueSen where xueHao={0}", xueHao.Text.Trim()); SqlCommand command = new SqlCommand(sql, sqlConnection); // 定义一个数据读取器对象 SqlDataReader sqlData = command.ExecuteReader(); //处理数据读取器sreader中的数据 if (sqlData.Read()) { xinMin.Text = sqlData["xinMin"].ToString(); xinBie.Text = sqlData["xinBie"].ToString(); senGao.Text = sqlData["senGao"].ToString(); } else { MessageBox.Show("该学生不存在!", "提示"); } //关闭DataReader对象 sqlData.Close(); sqlConnection.Close(); } catch(Exception i) { MessageBox.Show(i.ToString(), "错误"); } } 3.使用SqlDataAdapter和DataSet对象读取数据。该程序将用表格的形式显示stu表中全体学生的详细信息 private void Form1_Load(object sender, EventArgs e) { string str = "Server = DESKTOP-4HSQLSI\\LRC;database=cs172;integrated security=true"; SqlConnection sqlConn = new SqlConnection(str); sqlConn.Open(); // sql语句 string sql = "select *from xueSen"; //定义一个数据库适配器对象 SqlDataAdapter sda = new SqlDataAdapter(sql, sqlConn); //定义一个数据集对象 DataSet dataSet = new DataSet(); //将查询结果填充数据集对象,并用一个表的别名"ds"标记 sda.Fill(dataSet, "ds"); //指定dateGridView的数据源,dataGridView是以表格方式显示数据的控件 dataGridView1.DataSource = dataSet; dataGridView1.DataMember = "ds"; //关闭与数据库的连接 sqlConn.Close(); }

, sqlConn);

//定义一个数据集对象 DataSet dataSet = new DataSet(); //将查询结果填充数据集对象,并用一个表的别名"ds"标记 sda.Fill(dataSet, "ds"); //指定dateGridView的数据源,dataGridView是以表格方式显示数据的控件 dataGridView1.DataSource = dataSet; dataGridView1.DataMember = "ds"; //关闭与数据库的连接 sqlConn.Close();

}



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3