c# 读写 access 数据库、表 datagridview 窗体显示代码实例 最近项目中用到 c# 对于 access 数据库表读写 .mdb 操作,学习了下相关的东西,这里先整理 c# 对于 access 数据库的操作,对于 mysql 和 oracle 数据库的操作放到后面再写。 access 是微软数据库编
c#读写access数据库、表格datagridview窗体显示代码实例
最近项目中用到c#对于access数据库表读写.mdb操作,学习了下相关的东西,这里先整理c#对于access数据库的操作,对于mysql和oracle数据库的操作放到后面再写。
access是微软数据库编辑软件,其生成的数据库文件为.mdb或.accdb,因此在visual studio里不像操纵mysql那样需要使用mysql数据库驱动,系统库里有关于操纵数据库的几个类。说下其中几个主要用到的类:
system.data;
system.data.oledb;
system.data.odbc;
system.data.sqlclient;
先简单说下c#对于access数据库的几个基本操作原理:
c#操作access连接字符串
string connectionstring = provider=microsoft.jet.oledb.4.0; data source=mydata.mdb;
c#操作access建立连接
oledbconnection connection = new oledbconnection(connectionstring);
c#操作access使用oledbcommand类执行sql语句
oledbcommand cmd = new oledbcommand(sql, connection);
connection.open();
cmd.executenonquery();
[1]连接access数据库
oledbconnection conn = new oledbconnection(provider=microsoft.jet.oledb.4.0; data source= + application.startuppath + \\mydata.mdb);
[2]连接sql server2000数据库
sqlconnection conn = new sqlconnection(server=.; uid=admin; pwd=123456; database=mydata);
[3]受信任的sql server2000数据库
sqlconnection conn = new sqlconnection(workstation id=localhost; integrated security=sspi; database=mydata);
[4]asp中链接sql server/access数据库:(网页)
(sql server):
conn.connectionstring = driver={sql server}; server=(local); uid=admin; pwd=123456; database=mydata
(access):
conn.connectionstring = driver={microsoft access driver(*.mdb)}; dbq= & server.mappath(mydata.mdb)
!!!注意:→在asp中,语句结束不需要 ;
--------------------------------------------------------------------------------------------------------------------------------------------
一、创建.mdb数据库
//创建.mdb,注意参数path是.mdb的完整路径(不包含表的名称)//c#的ado.net不能通过编程方式创建新的access(mdb)数据库,所以只能用com的链接库的adox操作public static bool createmdbdatabase(string path){ try { adox.catalogclass cat = new adox.catalogclass(); cat.create(provider=microsoft.jet.oledb.4.0; data source= + path + ;); cat = null; return true; } catch { return false; }}
二、c#写入记录到access数据库sql插入数据库操作,一次只能插入一条记录,多条记录插入只能通过循环实现,效率不高;
或者要么更快地就是开启事务(保证数据一致性)→循环插入→最后数据再一起导入。
【实例】在form上创建一个textbox和一个button,点击button把textbox中的数据写入到access数据库中。
1.首先创建一个空access数据库datainput.mdb并写入相应字段:
2.读写数据库时应当将数据库关闭,再运行程序进行写操作
using system.data.oledb;private void button1_click(object sender, eventargs e){foreach (iacell cell in m_distributedcells){ //把cell.frequencyband、cell.ulfrequency、cell.dlfrequency全部写入数据库表.mdb里去 //string sql_0 = insert into table (column1,column2) values(' + textbox.text + ',' + textbox.text +'); //构造sql语句 string sql = ; if (cell.channelindex == 1) { sql = insert into datawrite(channelindex, bandwidth, startchindex, endchindex, excludedchannels, ulfrequency, dlfrequency, acir) values(' + 1 + ',' + 20 + ',' + 0 + ',' + 1 + ',' + 1 + ',' + 2402 + ',' + 2422 + ',' + 0 + '); } else if (cell.channelindex == 6) { sql = insert into datawrite(channelindex, bandwidth, startchindex, endchindex, excludedchannels, ulfrequency, dlfrequency, acir) values(' + 6 + ',' + 20 + ',' + 5 + ',' + 6 + ',' + 6 + ',' + 2427 + ',' + 2447 + ',' + 0 + '); } else if (cell.channelindex == 11) { sql = insert into datawrite(channelindex, bandwidth, startchindex, endchindex, excludedchannels, ulfrequency, dlfrequency, acir) values(' + 11 + ',' + 20 + ',' + 10 + ',' + 11 + ',' + 11 + ',' + 2452 + ',' + 2472 + ',' + 0 + '); }//access数据库路径,注意一定是双斜杠\\,否则会被当成转义字符! string dbpath = d:\\data\\datainput.mdb;//定义数据库连接对象 oledbconnection con = new oledbconnection(provider=microsoft.jet.oledb.4.0; data source= + dbpath); oledbcommand cmd = new oledbcommand(sql, con); //定义command对象 con.open(); //打开数据库连接 cmd.executenonquery(); //执行command命令 con.close(); //关闭数据库连接 }}
运行程序,点击button后(断点只循环1次),再次打开刚才的数据库表,此时表里已插入1条记录。
三、读出数据库的值——c#界面显示表格datagridview【实例】将现有access数据库表格内的数据以datagridview的形式显示在c#窗体中。
1.现有的数据库,50条记录。
2.代码
using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.text;using system.windows.forms;using system.data.oledb; //主要是这个东西,其实已经包含在system.data类里了,这里特别提出来注明下namespace text01{ public partial class form1 : form { public form1() { initializecomponent(); oledbconnection thisconnection = new oledbconnection(@provider=microsoft.jet.oledb.4.0;data source=d:\dataread.mdb); string sql = select * from dataread; oledbdataadapter thisadapter = new oledbdataadapter(sql, thisconnection); system.data.dataset thisdataset = new system.data.dataset(); thisadapter.fill(thisdataset, table); datatable dt = thisdataset.tables[table]; this.datagridview1.datasource = dt; thisconnection.close(); } }}
效果图: