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窗体显示代码实例的更多相关文章

  1. win7 64位系统下读写access数据库以及安装了office32位软件再安装64位odbc的方法

    公司一款软件还在读写access数据库. 问题是我的电脑是win7 64位, 运行程序会报错, 出错信息很明显, 大意是ODBC数据源读写出错. 因此,我需要下载Access ODBC 64位数据源 ...

  2. ASP连接读写ACCESS数据库实例(转)

    (一)   数据库的选择:有许多的数据库你可以选择,SQL SERVER.ACCESS(*.mdb).EXCEL(*.xls).FOXPRO(*.dbf)甚至普通的文本文件(*.txt)都可以达到存储 ...

  3. 让ADO.NET Entity Framework 支持ACCESS数据库

    如写的不好请见谅,本人水平有限. 个人简历及水平:. http://www.cnblogs.com/hackdragon/p/3662599.html 接到一个程序和网页交互的项目,用ADO.NET ...

  4. 运用模型绑定和web窗体显示和检索数据(Retrieving and displaying data with model binding and web forms)

    原文 http://www.asp.net/web-forms/overview/presenting-and-managing-data/model-binding/retrieving-data ...

  5. Access数据库及注入方法

    目录 Access数据库 Access数据库中的函数 盲注Access数据库 Sqlmap注入Access数据库 Access数据库 Microsoft Office Access是由微软发布的关系数 ...

  6. wcf使用JetEntityFrameworkProvider.dll写access数据库时,报"操作必须使用一个可更新的查询"错误的解决办法

    由于users用户组无权重写access数据库,需要设置users组用户能读写access数据库.

  7. C# - VS2019 WinFrm应用程序连接Access数据库,并简单实现数据库表的数据查询、显示

    序言 众所周知,Oracle数据库和MySQL数据库一般在大型项目中使用,在某些小型项目中Access数据库使用较为方便,今天记录一下VS2019 WinFrm应用程序连接Access数据库,并实现数 ...

  8. 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  9. winform里dataGridView分页代码,access数据库

    winform里dataGridView分页,默认dataGridView是不分页的和webform里不一样,webform中GridView自带自带了分页. 现在c/s的程序很多时候也需要webfo ...

随机推荐

  1. idea安装plugin

    ---恢复内容开始--- ---恢复内容结束---

  2. RESTful设计模式状态码code说明

    一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. 下面是标准RESTfu ...

  3. Android-Bundle的说明和用法

    1.Bundle类的作用 Bundle类是一种数据载体,类似于Map,用于存放key-value名值对形式的值.相对于Map,它提供了各种常用类型的putXxx()/getXxx()方法, 如:put ...

  4. kbmmw 5 的日志备份功能简介

    kbmmw 自从4.8.2 版本里增加了日志管理以后,随着版本升级,增加了很多功能,使用方法也有所改变. 功能也越来越强大. 今天说一下 kbmmw5 里面的日志备份,顺便演示一下新的使用方法. 我们 ...

  5. CMD命令操作

    win + R 然后输入 cmd 打开命令窗口 或者开始-->运行 打开 1.进入 D盘 输 d: 回车2.进入D盘 子目录 输入 cd d:\test 回车 3. dir 回车 进入文件目录 ...

  6. go网关

    package main import ( "flag" "fmt" "io" "net" "os" ...

  7. Thumbelina,摘自iOS应用Snow White and more stories

    Once upon a time there was a woman who wanted to have a child. 从前,有个想要个孩子的女人. A witch heard her wish ...

  8. 使用 QWorker 做为计划任务引擎

    QWorker 提供了 Plan 函数来提供计划任务功能的支持.每个任务做为一个作业,可以在指定的时间点被触发执行.而 cron 作为 Linux 操作系统下计划任务的标准被广大用户所熟知,QWork ...

  9. eclipse集成SVN插件-----复制添加插件

    首先从网上下载一个svn的插件包, 将插件包解压, 打开eclipse的文件夹, 将svn插件中features文件夹中的jar复制到eclipse中features文件夹中去: 将svn插件中plu ...

  10. Automating hybrid apps

    Automating hybrid apps One of the core principles of Appium is that you shouldn’t have to change you ...