ADO.Net组件(用的少),建立c# 与数据库的连接
一、ADO.Net = .Net数据提供程序 + DataSet
ADO.Net 五大对象:
1、Connection:负责程序和DB之间的联系
2、Command:负责执行SQL命令(查询、修改、插入、删除等命令)
3、DataReader:数据阅读器,负责读取查询结果(Select语句)
4、DataAdapter:数据适配器,从数据库中检索数据,再填充到本地数据集中。同时,我们可以利用DataAdapter,再将数据反向从DataSet中更新回数据库
5、DataSet:内存中的数据集
二、使用
由于数据库连接是非托管资源,GC并不能自动回收,所以在执行完成后要手动释放。
static void Main(string[] args)
{
var conStr = "server=127.0.0.1;database=huangdemo;user=root;pwd=123456";
//1-- DataReader 数据阅读器(并不保存数据),负责读取查询结果
using (MySqlConnection mySql = new MySqlConnection(conStr))
{
mySql.Open();
MySqlCommand command = new MySqlCommand("select * from stu", mySql);
MySqlDataReader result = command.ExecuteReader();
while (result.Read()) //读取下一行,有记录返回true,没有就false
{
Console.WriteLine("年龄:" + result["age"] + ",姓名:" + result["name"]);
}
result.Dispose();
command.Dispose();
}
//2-- DataAdapter数据适配器, DataSet数据集(类似于一个在内存中数据库)
using (MySqlConnection con = new MySqlConnection(conStr))
{
con.Open();
MySqlCommand command = new MySqlCommand("select * from stu", con);
MySqlDataAdapter adapter = new MySqlDataAdapter(command);
//方式一
DataSet dbSet = new DataSet("test_db");
adapter.Fill(dbSet);
DataTable dt = dbSet.Tables[0];
foreach (DataRow it in dt.Rows) //dt.Rows : 遍历数据行,每一行是一条记录(对象)
{
Console.WriteLine(it["name"].ToString() + "," + it["age"].ToString() + "," + it["sex"].ToString());
}
//方式二,adapter直接填充DataTable
DataTable dt1 = new DataTable();
adapter.Fill(dt1);
foreach (DataRow it in dt1.Rows) //dt.Rows : 遍历数据行,每一行是一条记录(对象)
{
Console.WriteLine(it["name"].ToString() + "," + it["age"].ToString() + "," + it["sex"].ToString());
}
adapter.Dispose();
command.Dispose();
}
}
三、DataSet 结构与使用
1、定义数据集及其数据表、数据列、数据行的类都在系统的System.Data命名空间下,之间的关系如下图:
2、基本使用:
//类似数据库
DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds.Tables.Add(dt);
//添加自增主键
DataColumn dcId = new DataColumn("id",typeof(int));
DataColumn dcName = new DataColumn("name", typeof(string));
dt.Columns.Add(dcId );
dt.Columns.Add(dcName );
//添加一行数据
DataRow row = dt.NewRow();
row["dcId "] = 1;
row["dcName"] = "Tom";
dt.Rows.Add(row);
3、更新数据回数据库(crud)
1.在DataSet的DataTable中添加一行数据
DataRow row = DataSet对象.Tables[“表名"].NewRow();
row[“列名”] = 值;
或删除DataSet中的选中行 :
DataSet对象.Tables[“表名”].Rows[行索引].Delete();
2.创建SqlCommandBuilder对象
SqlCommandBuilder builder = new SqlCommandBuilder(DataAdapter对象);
3.使用DataAdapter对象的Update()方法执行更新
DataAdapter对象.Update(DataSet对象, “表名");