好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#读写Access数据库、表格datagridview窗体显示代码实例

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();
        }
    }
}
 

效果图 :

查看更多关于C#读写Access数据库、表格datagridview窗体显示代码实例的详细内容...

  阅读:44次