如何在C#中用连接ACCESS数据库
下面,以一个实例来讲解这个问题:
(1)打开VS2010,【文件】->【新建】->【项目】->【Windows窗体应用程序】,新建一个窗体应用程序,命名为【 vsAcces】
(2)新建一个ACCESS数据库,命名为【MyAccess.mdb】,然后添加一个表,并增加字段【ID】、【name】、【password】,手动录入一些数据,并把这个文件放到【....\vsAcces\bin\Debug】目录下,如下图
(3)给工程添加一个数据库的操作类,在工程【单击右键】->【添加】->【类】,命名为【DatabaseOperate.cs】
(4)在这个类中,我们加入操作数据库的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Windows.Forms;
using System.Data;
namespace vsAcces
{
class DatabaseOperate
{
protected OleDbConnection dbconn;//定义数据库连接对象
protected OleDbCommand dbcomm = new OleDbCommand();//定义数据库操作对象
/// <summary>
/// 打开数据库
/// </summary>
/// <returns></returns>
public void CreateDbConn()
{
try
{
/*设置数据库路径*/
string dbpath = AppDomain.CurrentDomain.BaseDirectory
+ @"MyAccess.mdb";
/*初始化数据库连接对象*/
dbconn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbpath);
/*设置数据库操作对象使用此dbconn对象*/
dbcomm.Connection = dbconn;
/*打开数据库连接*/
dbconn.Open();
}
catch (OleDbException) //如果出现数据库连接异常,则关闭数据库连接并弹出提示框
{
this.CloseDbConn();//关闭数据库连接
MessageBox.Show("数据连接错误!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception) //如果出现其他异常,则关闭数据库连接并弹出提示框
{
this.CloseDbConn(); //关闭数据库连接
MessageBox.Show("数据连接错误!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
/// <summary>
/// 关闭数据库
/// </summary>
public void CloseDbConn()
{
if (dbconn.State == ConnectionState.Open) //如果数据库为打开状态,则关闭
{
dbconn.Close();//关闭数据库连接
}
dbconn.Dispose();//释放连接资源
dbcomm.Dispose();//释放操作资源
}
/// <summary>
/// 执行SQL语句
/// </summary>
/// <param name="sqlText">传入的SQL语句</param>
public void ExcuteSql(string sqlText)
{
try
{//捕获异常
CreateDbConn();//建立连接
dbcomm.CommandType = CommandType.Text;//设置操作类型为文本类型
dbcomm.CommandText = sqlText;//设置操作的SQL语句
dbcomm.ExecuteNonQuery();//执行操作
}
catch (Exception) //如果出现异常,则提示错误
{
MessageBox.Show("数据库操作错误!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finally
{
CloseDbConn();//关闭连接
}
}
/// <summary>
/// 判断是否执行成功,返回所影响的行数
/// </summary>
/// <param name="sqlText">传入的SQL语句</param>
/// <returns>影响的行数</returns>
public int ExcuteIntSql(string sqlText)
{
try
{
CreateDbConn();//建立连接
dbcomm.CommandType = CommandType.Text;//设置操作类型
dbcomm.CommandText = sqlText;//设置操作的SQL语句
return dbcomm.ExecuteNonQuery();//执行操作,并返回影响的行数
}
catch (Exception)
{
MessageBox.Show("数据库操作错误!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return 0;//如果出现异常,则返回0
}
finally
{
CloseDbConn();//关闭连接
}
}
/// <summary>
/// 返回查询出的单条数字记录结果
/// </summary>
/// <param name="sqlText">传入的SQL语句</param>
/// <returns>查询出的数字结果</returns>
public int ExcuteScrSql(string sqlText)
{
try
{
CreateDbConn();//建立连接
dbcomm.CommandType = CommandType.Text;//设置操作类型
dbcomm.CommandText = sqlText;//设置操作的SQL语句
return Convert.ToInt32(dbcomm.ExecuteScalar());//执行操作,并返回查询出的结果
}
catch (Exception)
{
return 0;//如果出现异常,则返回0
}
finally
{
CloseDbConn();//关闭连接
}
}
/// <summary>
/// 返回查询出的单条文字记录结果
/// </summary>
/// <param name="sqlText">传入的SQL语句</param>
/// <returns>查询出的文字结果</returns>
public string ExcuteStrScrSql(string sqlText)
{
try
{//捕获异常
CreateDbConn();//建立连接
dbcomm.CommandType = CommandType.Text;//设置操作类型
dbcomm.CommandText = sqlText;//设置操作的SQL语句
return dbcomm.ExecuteScalar().ToString();//执行操作,并返回查询出的结果
}
catch (Exception)
{
return "";//如果出现异常,则返回空字符串
}
finally
{
CloseDbConn();//关闭连接
}
}
/// <summary>
/// 返回查询出的数据表
/// </summary>
/// <param name="sqlText">传入的SQL语句</param>
/// <returns>查询出的数据表</returns>
public DataTable GetDataTable(string sqlText)
{
OleDbDataAdapter dbdapt = new OleDbDataAdapter();//实例化一个数据缓存适配器
DataTable dt = new DataTable();//实例化一个数据表
try
{//捕获异常
CreateDbConn();//建立连接
dbcomm.CommandType = CommandType.Text;//设置操作类型
dbcomm.CommandText = sqlText;//设置操作的SQL语句
dbdapt.SelectCommand = dbcomm;//执行SQL语句,选择出数据
dbdapt.Fill(dt);//填充数据表
}
catch (Exception)
{
MessageBox.Show("数据库操作错误!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finally
{
CloseDbConn();//关闭连接
}
return dt;//返回查询出的数据表
}
/// <summary>
/// 按指定条数读出的Table数据表
/// </summary>
/// <param name="sqlText">传入的SQL</param>
/// <param name="pre">开始读数据的记录号</param>
/// <param name="maxcunt">所要读出的最大条数</param>
/// <returns>返回一数据表</returns>
public DataTable GetPageDataTable(string sqlText, int pre, int maxcunt)
{
OleDbDataAdapter dbdapt = new OleDbDataAdapter();//实例化一个数据缓存适配器
DataSet ds = new DataSet();//实例化一个数据缓存器
try
{//捕获异常
CreateDbConn();//建立连接
dbcomm.CommandType = CommandType.Text;//设置操作类型
dbcomm.CommandText = sqlText;//设置操作的SQL语句
dbdapt.SelectCommand = dbcomm;//执行操作,选择出数据
dbdapt.Fill(ds, pre, maxcunt, "db_Table");//按指定的条数填充数据表
}
catch (Exception)
{
}
finally
{
CloseDbConn();//关闭连接
}
return ds.Tables["db_Table"];//返回数据表
}
}
}
(5)现在,我们演示一下如何把数据显示到窗体上
我们在工程【Form1】的窗体上,添加一个【DataGridView控件】,并命名为DGV,再添加一个3个【button控件】,分别是【添加所有】按钮 名为[btnSelectAll]、【删除选中行】按钮 名为[btnDelSelect]、查询【第二条和第三条】按钮 名为[btnTwoToThree]
(6)分别双击这三个按钮,分别进入click方法,然后写入如下代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace vsAcces
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
/*设置DataGridView选中的时候是选中一整行*/
this.DGV.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
}
private void btnSelectAll_Click(object sender, EventArgs e)
{
/*数据库操作对象*/
DatabaseOperate dbo = new DatabaseOperate();
/*执行的SQL语句*/
String sql = "select * from Info";
/*数据表对象*/
DataTable dt = new DataTable();
/*执行SQL语句*/
dt = dbo.GetDataTable(sql);
/*如果查询到数据,则绑定*/
if (dt.Rows.Count > 0)
{
DGV.DataSource = dt;
}
}
private void btnDelSelect_Click(object sender, EventArgs e)
{
/*数据库操作对象*/
DatabaseOperate dbo = new DatabaseOperate();
/*判断DataGridView中是否有数据,通过选中的行来判断 */
if (0 < DGV.SelectedRows.Count)
{
/*获取id*/
int index = (int)DGV.CurrentRow.Index; //获取当前选定行的下标
int id = (int)DGV.Rows[index].Cells[0].Value; //获取当前选定行的第1列的值
String sql = "delete from Info where ID = " + id;
/*执行并判断是否执行成功*/
if (dbo.ExcuteIntSql(sql) < 0)
{
MessageBox.Show("执行失败!");
}
/*刷新*/
btnSelectAll_Click(null, null);
}
}
private void btnTwoToThree_Click(object sender, EventArgs e)
{
/*数据库操作类*/
DatabaseOperate dbo = new DatabaseOperate();
/*执行的SQL语句*/
String sql = "select * from Info";
/*数据表对象*/
DataTable db = new DataTable();
/*执行查询,把查询到的数据放到数据表中*/
db = dbo.GetPageDataTable(sql, 1, 2);
/*关联到DataGridView中*/
DGV.DataSource = db;
}
}
}
(7)至此,我们就完成了,按下键盘【Ctrl+F5】,看一个运行后的效果
学会分享,学会做人,我是 绿色流氓兔 QQ:929955289
如何在C#中用连接ACCESS数据库相关推荐
- C 连接ACCESS数据库代码实例
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 今天一个 ...
- Revit连接Access数据库
欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207 背景 小伙伴们在做revit二次开发时,可能会需要用到数据库. 本文将介绍如何在Revit如何连接Acc ...
- vb adodb mysql_VB6实现连接Access数据库的ADODB代码实现方法
本文实例讲述了使用ADODB.Connection连接access数据库的方法,驱动类型版本为:Microsoft.Jet.OLEDB.4.0.在VB的数据库操作中,连接数据库是第一步,也是最基本的, ...
- pythonaccess系统_Win7(64位系统)中用Python连接access数据库(access2010)
[本机是win7 64位操作系统,做数据库实例时需要创建Access数据库的ODBC数据源,但是打开ODBC数据源后发现添加里面没有配置access的连接,如下图:还会弹出以下问题框:# -*- co ...
- C#连接Access数据库(详解)
做一个用VS2012的C#连接Access数据库的备忘, SQL数据库固然强大,有大微软的强力技术支持,LINQ的方便操作,但是如果写一个小程序对数据库方面没有什么大的要求的话,将来在数据库方面就可以 ...
- MFC 使用 ADO技术连接Access数据库
学了很久的MFC,于是想着使用MFC的ADO技术连接Access数据库. 记录一下,以备后面复习. 1.首先需要了解MDB数据库文件,本次示例代码连接的是MDB数据库文件.*.MDB文件是(Micro ...
- 在Windows 2003 64位下ASP无法连接Access数据库的解决办法
前几天安装好了 Windows 2003 64bit系统,在上面跑了一个asp的网站,在连接access数据库时出错误,google过后果然发现了一个办法,就是让IIS以32位的方式运行,只要在命令行 ...
- 使用VC连接Access数据库的两种方法
以前的时候用VC写了两种连接Access数据库的方法,为了方便以后查找把这两种方法做一下简单的介绍.Windows平台的数据接口标准有ODBC.OLE DB.ADO和Borland的BDE接口,ODB ...
- access后台链接mysql_ASP.NET连接 Access数据库的几种方法
web.config 第一种方法: 第二种方法: 后台 aspx.CS using System; using System.Collections.Generic; using System.Lin ...
最新文章
- Lumen / Laravel 使用网易邮箱 SMTP 发送邮件
- 更改innodb_page_size状态值
- 【408预推免复习】计算机组成原理之计算机的运算方法
- 【转载】Yield,迭代器,生成器
- 对家庭网络设备行业的理解
- [原创].怎样制作一个简单ip,以方便在Quartus II和Nios II中使用?
- 串口使用stream_使用SerialPort库进行Node物联网项目开发
- 不安装oracle客户端如何用plsql连接oracle
- 【BZOJ4318】OSU!【期望DP】
- 如何使用github和git进行团队合作开发(队友和owner的仓库连接)
- matlab改进中值滤波,求助中值滤波和自适应中值滤波算法错误修改
- 关于keil5开发stc8等51单片机程序和在线调试的步骤
- SEO精髓:四处一词
- 2022年最新谷歌商店上架_Google Play 上架全流程附图
- http://www.jb51.net/article/84149.htm
- Java编程笔记2:初始化和清理
- 【软件】DVDStyler报错找不到VOB文件
- . xx.sh ./xx.sh sh xx.sh的区别
- 数字图像处理——加权均值滤波器
- 【开关电源】LLC在学习路上疑惑和答案