datagridview控件读写mysql数据库表格的方法_C#读写Access数据库、表格datagridview窗体显示代码实例...

本文介绍了如何使用C#进行Access数据库的读写操作,包括创建数据库、写入记录到Access以及通过datagridview显示数据。通过示例代码展示了如何连接数据库,执行SQL插入语句,并在窗体上展示数据。
摘要由CSDN通过智能技术生成

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并写入相应字段:

27b28615bd8affe9f601d7f3b5c6d40e.png

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条记录。

5ef0f008b291f73494c0fd03f08430bf.png

三、读出数据库的值——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();

}

}

}

效果图:

5511e8872c283d94d88bf6a11070e1ef.png

本文介绍C#访问操作Access数据库的基础知识,并提供一个相关的例程。 1.通过ADO.NET的OleDb相关类来操作Access 主要知识点如下: using System.Data.OleDb; using System.Data; 连接字符串:String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=product.mdb"; 建立连接:OleDbConnection connection = new OleDbConnection(connectionString); 使用OleDbCommand类来执行Sql语句: OleDbCommand cmd = new OleDbCommand(sql, connection); connection.Open(); cmd.ExecuteNonQuery(); 2.取得Access自增标识字段在插入数据后的id值 cmd.CommandText = @"select @@identity"; int value = Int32.Parse(cmd.ExecuteScalar().ToString()); return value; 3.执行事务 需要用到OleDbTransaction,关键语句如下: OleDbConnection connection = new OleDbConnection(connectionString); OleDbCommand cmd = new OleDbCommand(); OleDbTransaction transaction = null; cmd.Connection = connection; connection.Open(); transaction = connection.BeginTransaction(); cmd.Transaction = transaction; cmd.CommandText=sql1; cmd.ExecuteNonQuery(); cmd.CommandText=sql2; cmd.ExecuteNonQuery(); transaction.Commit(); 4.执行查询,返回DataSet OleDbConnection connection = new OleDbConnection(connectionString); DataSet ds = new DataSet(); connection.Open(); OleDbDataAdapter da = new OleDbDataAdapter(sql, connection); da.Fill(ds,"ds"); 5.分页查询 分页查询使用OleDbDataReader来读取数据,并将结果写到一个DataSet中返回。 以上内容封装为三个可重用的类:AccessDBUtil,AccessPageUtil,Page 代码这里下载AccessDBUtilDemo.rar (191.37 KB , 下载:999次) 本例程是一个c#的winform程序,但是数据访问类可以在Web环境下使用。 本例程演示了: 1.Access数据库的插入,更新,修改,查询; 2.带参数的sql语句的使用,而不是拼SQL; 3.使用DataReader的分页查询,而不是用嵌套的SQL语句来分页; 4.用事务同时执行多个SQL语句; 5.在插入数据的同时返回最新的ID值; 6.整型,实型,字符串,日期型,布尔型五种数据类型的操作; 7.使用正则表达式来验证整数和实数; 8.listview用来显示数据的一些基本用法。 本示例不包括: 1.高效的分页查询,仅仅是提供了一种分页的方法,但我认为DataReader应该比嵌套的SQL语句快(未测试)。 2.完善的分页封装,只提供了分页的简单包装。 3.嵌套的事务处理,提供了同时执行多个sql语句的事务处理,但不支持嵌套事务。 4.listview的使用,只是利用winform控件来演示数据访问,因此不能作为winform编程的良好示例,例如添加数据时界面并没有很好地更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值