本文章参考了课本以及上课时的代码,如果有错误的地方麻烦各位指正
文章目录
ADO.NET
微软公司在.NET编程环境中优先使用的数据访问接口ADO.NET提供了平台互用性和可伸缩的数据访问
.NET Framework数据提供程序包含以下4个核心类 :
(1)Connection:建立与数据源的连接
(2)Command:对数据源执行操作命令,用于修改数据,查询数据,运行存储过程等
(3)DataReader:从数据源获取只读只进的数据流
(4)DataAdaper:用数据源数据填充DataSet,并可以处理数据更新
DataSet是ADO.NET的断开式结构的核心组件。DataSet是数据表的集合,包含任意多个数据表.
提示:以下是本篇文章正文内容,下面案例可供参考
一、使用Connection对象连接数据库
1.构造方法(使用一个参数的)
Connection(ConnectionString):ConnectionString是连接字符串,连接字符串的参数主要包括服务器、数据库用户名、数据库密码、数据库名
2.方法
方法名称 | 介绍 |
---|---|
open() | 打开数据库 |
close() | 关闭数据库 |
构造连接字符串有以下两种方法(1.直接构造 2.在配置文件中存储连接字符串)
接下来以直接构造为例子
直接构造,格式如下:
SqlConnection conn=new SqlConnection(“server=服务器名称;database=数据库名称;uid=登录数据库的用户名;pwd=登录数据库的密码;”);
//打开数据源
SqlConnection conn=new SqlConnection("server=.;database=FrmManeger;uid=sa;pwd=123456;");
//打开连接
conn.Open();
二、使用Command对象执行数据库命令
1.构造方法
Command(CommandText,Connection):CommandText是要执行的SQL命令;Connection为使用的数据连接对象
2.方法
方法名称 | 介绍 |
---|---|
ExecuteNonQuery() | 返回的是被影响的行数(整数),一般在修改时使用,不会造成内存泄漏 |
ExecuteReader() | 返回的是MySqlDataReader对象 |
//写法一:
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from UsersTable where username=@username and password=@pwd";
cmd.Connection = conn;
//写法二:
SqlCommand cmd = new SqlCommand("select * from UsersTable where username=@username and password=@pwd",conn);
三、使用DataAdaper对象执行数据库命令
DataAdaper用来连接数据源与数据集DataSet
在一个DataSet对象实例中,可以包含多个DataTable,而一个DataTable可以包含多个DataRow
DataAdaper对象的方法
方法名称 | 介绍 |
---|---|
Fill() | 用于将数据源的查询结果添加到数据集 |
Updata() | 用于将数据集中的数据存储到数据源中 |
//SqlDataAdapter用于连接数据源和数据集DataSet
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
DataSet ds = new DataSet();
//查询语句返回的值临时表名为logintable
sda.Fill(ds,"logintable");
四、使用DataReader对象执行数据库命令
DataReader对象允许你以向前的,只读的方式读取数据,有时候DataReader对象也称为消软管游标
若要创建 SqlDataReader ,必须调用SqlCommand 对象的 ExecuteReader 方法 ,而不是直接使用构造函数
DataReader对象的方法
方法名称 | 介绍 |
---|---|
Close() | 关闭 DbDataReader 对象 |
Read() | 让 SqlDataReader 前进到下一条记录 |
SqlCommand cmd = new SqlCommand("select * from UsersTable where username=@username and password=@pwd",conn);
//创建 SqlDataReader ,必须调用SqlCommand 对象的 ExecuteReader 方法
SqlDataReader sdr = cmd.ExecuteReader();
五、使用SqlParameter将查询条件参数化
为避免SQL注入,提高代码安全性,使用SqlParameter可以实现SQl语句参数的动态添加。
//写法一:
string str="select * from UsersTable where username=@username and password=@pwd";
SqlParameter[] sqlParameters =
{
new SqlParameter("@username",this.txtusername.Text),
new SqlParameter("@pwd",this.txtpwd.Text)
};
if(sqlParameters!=null){
//将参数添加到SQL执行命令
cmd.Parameters.AddRange(sqlParameters);
}
//写法二:
string str="select * from UsersTable where username=@username and password=@pwd";
SqlParameter Parameters1 =new SqlParameter("@username",this.txtusername.Text);
SqlParameter Parameters2 =new SqlParameter("@pwd",this.txtpwd.Text);
//将参数添加到SQL执行命令
cmd.Parameters.Add(Parameters1);
cmd.Parameters.Add(Parameters2);
总结
这里对以上的代码进行简单的整理(除去DataReader部分)
1.无参数传递
//打开数据源
SqlConnection conn=new SqlConnection("server=.;database=FrmManeger;uid=sa;pwd=123456;");
//打开连接
conn.Open();
//操作命令
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from UsersTable where username='admin' and password='123'";
cmd.Connection = conn;
//SqlDataAdapter用于连接数据源和数据集DataSet
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
DataSet ds = new DataSet();
//查询语句返回的值临时表名为logintable
sda.Fill(ds,"logintable");
//这一步骤是将查询出来的结果显示在dataGridView控件上
dataGridView1.DataSource = ds.Tables[0];
//关闭数据库
conn.Close();
2.参数化传递
//打开数据源
SqlConnection conn=new SqlConnection("server=.;database=FrmManeger;uid=sa;pwd=123456;");
//打开连接
conn.Open();
//操作命令
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
string str="select * from UsersTable where username=@username and password=@pwd";
SqlParameter[] sqlParameters =
{
new SqlParameter("@username",this.txtusername.Text),
new SqlParameter("@pwd",this.txtpwd.Text)
};
if(sqlParameters!=null){
//将参数添加到SQL执行命令
cmd.Parameters.AddRange(sqlParameters);
}
cmd.CommandText = str;
//SqlDataAdapter用于连接数据源和数据集DataSet
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
//查询语句返回的值临时表名为logintable
sda.Fill(ds,"logintable");
//这一步骤是将查询出来的结果显示在dataGridView控件上
dataGridView1.DataSource = ds.Tables[0];
//关闭数据库
conn.Close();
当某个代码实现的功能要重复使用时,可以进行代码的封装
这里我新建了一个SqlHelper类,将代码封装进去,调用SqlHelper类的方法来实现这些功能