C#ADO.NET
在C#语言中提供了ADO.NET组件来实现连接数据库以及操作数据库中数据的功能;
ADO(Active Data Object)是一个COM组件类库,用于访问数据库。是.Net平台上访问数据库组件。
ADO.NET体系结构
1、Connection类(连接)
该类主要用于数据库中建立连接和断开连接操作,能通过类获得当前数据库连接状态。
2、Command类(命令)
向连接数据库发出操作命令。操作(增删改查)
3、DataReader类(读取数据)
该类用于读取从数据库中查询出来的数据;
4、DataAdaper类(桥梁)
该类与DataSet联用,它主要用于将数据库的结果运送到DataSet中保存;
5、DataSet类(数据集)
该类与DataAdaper类似,都用于存放对数据库查询的集合。差异,DataSet数据可反复读取、更改值。
一、Conneciton连接
SqlConection类中提供常用属性和方法如下
属性或方法 | 说明 |
---|---|
SqlConnection() | 无参构造方法 |
SqlConnection(string connectionstring) | 带参数的构造方法,数据库连接字符串作为参数 |
Connectionstring | 属性,获取或设置数据库的连接串 |
State | 属性,获取当前数据库的状态,由枚举类型 Connectionstate 为其提供值 |
ConnectionTimeout | 属性,获取在尝试连接时终止尝试并生成错误之前所等待的时间 |
DataSource | 属性,获取要连接的 SQL Server 的实例名 |
Open() | 方法,打开一个数据库连接 |
Close() | 方法,关闭数据库连接 |
BeginTransaction() | 方法,开始一个数据库事务 |
连接方式一:
server=服务器名称/数据库的实例名;uid=登录名;pwd=密码;datatbase=s数据库名称
连接方式二:
Data Source=服务器名称/数据库的实例名;Initial Catalog=数据库名称;User ID=用户名;Password=密码;
设置安全性环境:而是使用 SQL Server 验证方式登录数据库,即指定用户名和密码。
数据库连接编写
代码示范:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Connection_but_Click(object sender, EventArgs e) { //连接数据库对象 SqlConnection conn = null; //连接数据库串 string connStr = "Data source=.;Initial Catalog=MySchool;User ID=sa;Password=pwd"; try { conn = new SqlConnection(connStr); conn.Open(); MessageBox.Show("已连接数据库"); } catch (Exception ex) { MessageBox.Show("连接数据库失败!" + ex.Message); } finally { if(conn!=null) { conn.Close();//关闭数据库连接 } } } } }
注意:
- 数据连接使用后,需要关闭断开数据,以释放资源,关闭连接放在finally语句
- 也可以使用using方式释放资源
private void button1_Click(object sender, EventArgs e) { string connStr = "Data source=.;Initial Catalog=MySchool;User ID=sa;Password=pwd"; try { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); //打开数据库 MessageBox.Show("已连接数据库"); } } catch (Exception ex) { MessageBox.Show("连接数据库失败!" + ex.Message); } }
二、Command命令操作
所谓增删改查数据库命令
SqlCommand类中常用的构造方法
构造方法 | 说明 |
---|---|
SqlCommand() | 无参构造方法 |
SqlCommand(string commandText,SqlConnection conn) | 带参的构造方法,第 1 个参数是要执行的 SQL 语句,第 2 个参数是数据库的连接对象 |
SqlCommand类提供不同属性和方法
属性或方法 | 说明 |
---|---|
CommandText | 属性,Command 对象中要执行的 SQL 语句 |
Connection | 属性,获取或设置数据库的连接对象 |
CommandType | 属性,获取或设置命令类型 |
Parameters | 属性,设置 Command 对象中 SQL 语句的参数 |
ExecuteReader() | 方法,获取执行查询语句的结果 |
ExecuteScalar() | 方法,返回查询结果中第 1 行第 1 列的值 |
ExecuteNonQuery() | 方法,执行对数据表的增加、删除、修改操作 |
执行
示范代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Connection_but_Click(object sender, EventArgs e) { //连接数据库对象 SqlConnection conn = null; //连接数据库串 string connStr = "Data source=.;Initial Catalog=MySchool;User ID=sa;Password=123456"; try { conn = new SqlConnection(connStr); conn.Open(); //打开数据库 //创建SqlCommand对象 SqlCommand cmd = new SqlCommand("insert into Student(StudentNo,StudentName,LoginPwd,Gender,GradeId,BornDate) values(1,'小美','123',1,1,'2021-3-17')", conn); //ExecuteNonQuery 执行插入 int insertRow=cmd.ExecuteNonQuery(); if (insertRow > 0) { MessageBox.Show("执行影响返回行数:{" + insertRow + "}"); } } catch (Exception ex) { MessageBox.Show("连接数据库失败!" + ex.Message); } finally { if(conn!=null) { conn.Close();//关闭数据库连接 } } } } }
数据库插入记录