Access数据的优点:
1,存储方式单一 Access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为 .mdb 的数据库文件中,便于用户的操作和管理。
2,面向对象
3,界面友好,易操作
4,轻量级,数据库(.mdb)文件可以直接加载到C#项目文件里(个人认为它最大的优点就是这个)
连接Access数据库的步骤和连接SQL Server Oracle MySql 数据库的方式类似分为7 步:
1,新建OleDbConnection对象 并传入连接字符串 获得与数据库的连接
OleDbConnection conn = new OleDbConnection("provider = microsoft.Jet.OLEDB.4.0;Data Source = D:\\Student.mdb");
2,使用OleDbConnection对象的实例conn 新建OleDbCommand对象
OleDbCommand comm = conn.CreateCommand();
3,通过OleDbCommand的实例comm传入Sql语句
comm.CommandText = "select * from student";
4,打开连接
conn.Open();
5,调用实例comm的ExecuteReader()并保存在OleDbDataReader对象中
OleDbDataReader dr = comm.ExecuteReader();
dr 里面就是从数据库查到的数据 可以对它进行相关的操作
6,释放资源
conn.Dispose();
7,关闭连接
conn.Close();
A.mdb文件是原来没有的,程序需要创建一个然后往里面写数据!
1.新建工程 —进入解决方案->引用->添加引用 —选择com标签下的“Microsoft ADO Ext. 2.8 for DDL and Security”—点击OK
2.添加引用:using ADOX;
3.用ADOX创建access数据库
ADOX.Catalog catalog = new Catalog();
catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Jet");
这时在运行在debug文件夹下就可以看到这个mdb了。
其实何必要创建呢,我每次都是建一个空白的mdb文件,需要的时候再拷贝一下就可以啦。
生成表NewTable,该表有文本字段Field1和整型字段Field2
string conStr = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = test.mdb";
OleDbConnection conn = new OleDbConnection(conStr);
string dbstr = "CREATE TABLE NewTable(Field1 TEXT, Field2 INTEGER)";
OleDbCommand oleDbCom = new OleDbCommand(dbstr, conn);
conn.Open();
oleDbCom.ExecuteNonQuery();
conn.Close();
数据流:
数据库—创建DataAdapter实例就建立好了和数据库的关联——通过DataAdapter实例的Fill指令将数据填充到Dataset——选择Dataset中的表格添加到DataTable——将表格填充到dataGridView1.DataSource。
开始前::先建立一个数据库test.mdb,在其中建立表格NewTable,表格中自己添加一些内容;
public void viewAccessInfo()
{
//【1】连接数据库
string connect_str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb";
OleDbConnection thisConnection = new OleDbConnection(connect_str);
//【2】编写SQL指令,星号(*)是选取所有列的快捷方式。
string sql = "select * from NewTable";
//OleDbDataAdapter是 DataSet 和数据源之间的桥梁,用于检索和保存数据。
OleDbDataAdapter thisAdapter = new OleDbDataAdapter(sql, thisConnection);
//DataSet可以理解成在应用程序中的数据库
DataSet thisDataSet = new System.Data.DataSet();
//使用 Fill 将数据从数据源加载到 DataSet 中
thisAdapter.Fill(thisDataSet, "table");
//DataTable可以理解成DataSet的一个表格;将table中的表格内容添加到datatable
DataTable dt = thisDataSet.Tables["table"];
//将数据表和dataGridView1进行绑定
dataGridView1.DataSource = dt;
//关闭连接
thisConnection.Close();
}
运行效果如下:
1,将DataGridView控件的界面大小随着我们显示的内容变化而变化。只要设置AutoSizeCloumnsMode这个属性,将它的属性值设为Fill就可以了。
2,有些时候我们想让DataGridView控件的大小随着窗体或者是页面的大小变化而变化,两个方法分别是:
(1)设置DataGridView的属性Anchor的值为上下左右就可以了。
(2)设置Dock属性为Fill,就是将DataGridView填满整个窗体或者是页面。
运行效果如下:
数据流:
将数据表在datagridview中显示出来——将dataGridView1.DataSource转换成表格形式——通过OleDbCommandBuilder选取需要添加的数据库表格和连接,与前面的OleDbDataAdapter对象关联——通过adp.Update完成更新。
实现步骤如下:
1. 建立数据库连接
2. 实例化OleDbDataAdapter对象!
3. 建立一个DataSet对象,并把执行select语句得到的记录添加到其中
4.建立OleDbCommandBuilder对象!并让它与我们前面的OleDbDataAdapter对象关联
5. 对DataSet中包含表的特定记录进行增加、删除、修改
6. 执行OleDbDataAdapter对象的Update命令更新数据库
7. 关闭数据库连接
private void Form1_Load(object sender, EventArgs e)
{
//viewAccessInfo();//显示数据库文件的内容到画面
DateToAccess();
}
public void DateToAccess()
{
string str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb";
OleDbConnection conn = new OleDbConnection(str);
adp = new OleDbDataAdapter("select * from NewTable", conn);
DataTable dt = new DataTable();
adp.Fill(dt);
dataGridView1.DataSource = dt;
}
private void button1_Click(object sender, EventArgs e)
{
var dt = (DataTable)dataGridView1.DataSource;
OleDbCommandBuilder cmdb = new OleDbCommandBuilder(adp);
adp.Update(dt);
}
注意事项:
1.不含主键字段,执行Select语句没有任何问题,但数据库无法执行Insert、Update和Delete语句。若要对显示出来的数据进行修改并更新数据库,务必把数据库表格的主键(Primary Key)带上。
2.OleDbCommand属于DBcommand(还包括odbcCommand\OracleCommand\SqlCommand)类派生,DBcommand的作用是:当建立与数据源的连接后,可以使用 DBCommand 对象来执行命令并从数据源中返回结果;
3.DataAdapter 用于从数据源检索数据并填充 DataSet 中的表。DataAdapter 还将对 DataSet 的更改解析回数据源。DataAdapter 使用 .NET Framework 数据提供程序的 Connection 对象连接到数据源,并使用 Command 对象从数据源检索数据以及将更改解析回数据源。
4.OleDbCommandBuilder就是相当于updatecommand,但是它是自动调用的。
单击打开教程链接