下面,以一个实例来讲解这个问题:

(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数据库相关推荐

  1. C 连接ACCESS数据库代码实例

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 今天一个 ...

  2. Revit连接Access数据库

    欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207 背景 小伙伴们在做revit二次开发时,可能会需要用到数据库. 本文将介绍如何在Revit如何连接Acc ...

  3. vb adodb mysql_VB6实现连接Access数据库的ADODB代码实现方法

    本文实例讲述了使用ADODB.Connection连接access数据库的方法,驱动类型版本为:Microsoft.Jet.OLEDB.4.0.在VB的数据库操作中,连接数据库是第一步,也是最基本的, ...

  4. pythonaccess系统_Win7(64位系统)中用Python连接access数据库(access2010)

    [本机是win7 64位操作系统,做数据库实例时需要创建Access数据库的ODBC数据源,但是打开ODBC数据源后发现添加里面没有配置access的连接,如下图:还会弹出以下问题框:# -*- co ...

  5. C#连接Access数据库(详解)

    做一个用VS2012的C#连接Access数据库的备忘, SQL数据库固然强大,有大微软的强力技术支持,LINQ的方便操作,但是如果写一个小程序对数据库方面没有什么大的要求的话,将来在数据库方面就可以 ...

  6. MFC 使用 ADO技术连接Access数据库

    学了很久的MFC,于是想着使用MFC的ADO技术连接Access数据库. 记录一下,以备后面复习. 1.首先需要了解MDB数据库文件,本次示例代码连接的是MDB数据库文件.*.MDB文件是(Micro ...

  7. 在Windows 2003 64位下ASP无法连接Access数据库的解决办法

    前几天安装好了 Windows 2003 64bit系统,在上面跑了一个asp的网站,在连接access数据库时出错误,google过后果然发现了一个办法,就是让IIS以32位的方式运行,只要在命令行 ...

  8. 使用VC连接Access数据库的两种方法

    以前的时候用VC写了两种连接Access数据库的方法,为了方便以后查找把这两种方法做一下简单的介绍.Windows平台的数据接口标准有ODBC.OLE DB.ADO和Borland的BDE接口,ODB ...

  9. access后台链接mysql_ASP.NET连接 Access数据库的几种方法

    web.config 第一种方法: 第二种方法: 后台 aspx.CS using System; using System.Collections.Generic; using System.Lin ...

最新文章

  1. Lumen / Laravel 使用网易邮箱 SMTP 发送邮件
  2. 更改innodb_page_size状态值
  3. 【408预推免复习】计算机组成原理之计算机的运算方法
  4. 【转载】Yield,迭代器,生成器
  5. 对家庭网络设备行业的理解
  6. [原创].怎样制作一个简单ip,以方便在Quartus II和Nios II中使用?
  7. 串口使用stream_使用SerialPort库进行Node物联网项目开发
  8. 不安装oracle客户端如何用plsql连接oracle
  9. 【BZOJ4318】OSU!【期望DP】
  10. 如何使用github和git进行团队合作开发(队友和owner的仓库连接)
  11. matlab改进中值滤波,求助中值滤波和自适应中值滤波算法错误修改
  12. 关于keil5开发stc8等51单片机程序和在线调试的步骤
  13. SEO精髓:四处一词
  14. 2022年最新谷歌商店上架_Google Play 上架全流程附图
  15. http://www.jb51.net/article/84149.htm
  16. Java编程笔记2:初始化和清理
  17. 【软件】DVDStyler报错找不到VOB文件
  18. . xx.sh ./xx.sh sh xx.sh的区别
  19. 数字图像处理——加权均值滤波器
  20. 【开关电源】LLC在学习路上疑惑和答案

热门文章

  1. 程序员常用英语词汇(016)
  2. 设计模式-牛刀小试01
  3. 【程序人生】回忆职业生涯(五)文章千古事——回忆写作经历
  4. 滴滴OCE限时邀请有礼
  5. 黑马程序员_IOS开发简介和C语言基础
  6. 运维管理系统有哪些特色
  7. TF-IDF具体算法和原理
  8. 《Qt 5.9 C++开发指南》一书特点总结
  9. php正则邮箱验证,两种PHP用户注册邮箱验证正则表达式方法
  10. Android——NORDIC nRF5x系列 DFU升级 APP实现