C#对Access进行增删改查的完整示例_C#教程

这篇文章整理了C#对Access数据库的查询、添加记录、删除记录和更新数据等一系列的操作示例,有需要的可以参考学习。

首先是AccessHelper.cs,网上有下载,下面附送一份;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.OleDb;
using System.Data;
using System.Windows.Forms;

namespace yxdain
{
  public class AccessHelper
  {
    private string conn_str = null;
    private OleDbConnection ole_connection = null;
    private OleDbCommand ole_command = null;
    private OleDbDataReader ole_reader = null;
    private DataTable dt = null;

    /// <summary>
    /// 构造函数
    /// </summary>
    public AccessHelper()
    {
      //conn_str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + Environment.CurrentDirectory + "\\yxdain.accdb'";
      conn_str = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + Environment.CurrentDirectory + "\\yxdain.accdb'";

      InitDB();
    }

    private void InitDB()
    {
      ole_connection =new OleDbConnection(conn_str);//创建实例
      ole_command =new OleDbCommand();
    }

    /// <summary>
    /// 构造函数
    /// </summary>
    ///<param name="db_path">数据库路径
    public AccessHelper(string db_path)
    {
      //conn_str ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source='"+ db_path + "'";
      conn_str = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + db_path + "'";

      InitDB();
    }

    /// <summary>
    /// 转换数据格式
    /// </summary>
    ///<param name="reader">数据源
    /// <returns>数据列表</returns>
    private DataTable ConvertOleDbReaderToDataTable(ref OleDbDataReader reader)
    {
      DataTable dt_tmp =null;
      DataRow dr =null;
      int data_column_count = 0;
      int i = 0;

      data_column_count = reader.FieldCount;
      dt_tmp = BuildAndInitDataTable(data_column_count);

      if(dt_tmp == null)
      {
        return null;
      }

      while(reader.Read())
      {
        dr = dt_tmp.NewRow();

        for(i = 0; i < data_column_count; ++i)
        {
          dr[i] = reader[i];
        }

        dt_tmp.Rows.Add(dr);
      }

      return dt_tmp;
    }

    /// <summary>
    /// 创建并初始化数据列表
    /// </summary>
    ///<param name="Field_Count">列的个数
    /// <returns>数据列表</returns>
    private DataTable BuildAndInitDataTable(int Field_Count)
    {
      DataTable dt_tmp =null;
      DataColumn dc =null;
      int i = 0;

      if(Field_Count <= 0)
      {
        return null;
      }

      dt_tmp =new DataTable();

      for(i = 0; i < Field_Count; ++i)
      {
        dc =new DataColumn(i.ToString());
        dt_tmp.Columns.Add(dc);
      }

      return dt_tmp;
    }

    /// <summary>
    /// 从数据库里面获取数据
    /// </summary>
    ///<param name="strSql">查询语句
    /// <returns>数据列表</returns>
    public DataTable GetDataTableFromDB(string strSql)
    {
      if(conn_str == null)
      {
        return null;
      }

      try
      {
        ole_connection.Open();//打开连接

        if(ole_connection.State == ConnectionState.Closed)
        {
          return null;
        }

        ole_command.CommandText = strSql;
        ole_command.Connection = ole_connection;

        ole_reader = ole_command.ExecuteReader(CommandBehavior.Default);

        dt = ConvertOleDbReaderToDataTable(ref ole_reader);

        ole_reader.Close();
        ole_reader.Dispose();
      }
      catch(System.Exception e)
      {
        //Console.WriteLine(e.ToString());
        MessageBox.Show(e.Message);
      }
      finally
      {
        if(ole_connection.State != ConnectionState.Closed)
        {
          ole_connection.Close();
        }
      }

      return dt;
    }

    /// <summary>
    /// 执行sql语句
    /// </summary>
    ///<param name="strSql">sql语句
    /// <returns>返回结果</returns>
    public int ExcuteSql(string strSql)
    {
      int nResult = 0;

      try
      {
        ole_connection.Open();//打开数据库连接
        if(ole_connection.State == ConnectionState.Closed)
        {
          return nResult;
        }

        ole_command.Connection = ole_connection;
        ole_command.CommandText = strSql;

        nResult = ole_command.ExecuteNonQuery();
      }
      catch(System.Exception e)
      {
        //Console.WriteLine(e.ToString());
        MessageBox.Show(e.Message);
        return nResult;
      }
      finally
      {
        if(ole_connection.State != ConnectionState.Closed)
        {
          ole_connection.Close();
        }
      }

      return nResult;
    }
  }
}

定义变量,设置列标题;

private AccessHelper achelp;
......
  private void Form1_Load(object sender, EventArgs e)
  {

    achelp = new AccessHelper();
    string sql1 = "select * from ycyx";
    databind1(sql1);

    dataGridView1.Columns[0].Visible = false;
    dataGridView1.Columns[1].HeaderCell.Value = "服务号码";
    dataGridView1.Columns[2].HeaderCell.Value = "客户名称";
    dataGridView1.Columns[3].HeaderCell.Value = "归属地区";
    dataGridView1.Columns[4].HeaderCell.Value = "当前品牌";
    dataGridView1.Columns[5].HeaderCell.Value = "当前套餐";
    dataGridView1.Columns[6].HeaderCell.Value = "当前状态";
  }

显示数据表全部内容;

private void databind1(string sqlstr)
{
  DataTable dt = new DataTable();
  dt = achelp.GetDataTableFromDB(sqlstr);
  dataGridView1.DataSource = dt;
}

读取要更新记录到更新窗体控件;

private void button3_Click(object sender, EventArgs e)
{
  if (dataGridView1.SelectedRows.Count < 1 || dataGridView1.SelectedRows[0].Cells[1].Value == null)
  {
    MessageBox.Show("没有选中行。", "M营销");
    return;
  }
  //f3.Owner = this;
  DataTable dt = new DataTable();
  object oid = dataGridView1.SelectedRows[0].Cells[0].Value;
  string sql = "select * from ycyx where ID=" + oid;
  dt = achelp.GetDataTableFromDB(sql);
  f3 = new Form3();
  f3.id = int.Parse(oid.ToString());
  //f3.id = 2;
  f3.Text1 = dt.Rows[0][1].ToString();
  f3.Text2 = dt.Rows[0][2].ToString();
  f3.Text3 = dt.Rows[0][3].ToString();
  f3.Text4 = dt.Rows[0][4].ToString();
  f3.Text5 = dt.Rows[0][5].ToString();
  f3.Text6 = dt.Rows[0][6].ToString();

  f3.ShowDialog();

}

添加记录;

private void button4_Click(object sender, EventArgs e)
{
  if (textBox1.Text == "" && textBox2.Text == "" && textBox3.Text == "" && textBox4.Text == "" && textBox5.Text == "" && textBox6.Text == "")
  {
    MessageBox.Show("没有要添加的内容", "M营销添加");
    return;
  }
  else
  {
    string sql = "insert into ycyx (fwhm,khmc,gsdq,dqpp,dqtc,dqzt) values ('" + textBox1.Text + "','" + textBox2.Text + "','"+
      textBox3.Text + "','"+ textBox4.Text + "','"+ textBox5.Text + "','"+ textBox6.Text + "')";
    int ret = achelp.ExcuteSql(sql);
    string sql1 = "select * from ycyx";
    databind1(sql1);
    textBox1.Text = "";
    textBox2.Text = "";
    textBox3.Text = "";
    textBox4.Text = "";
    textBox5.Text = "";
    textBox6.Text = "";
  }
}

删除记录;

private void button2_Click(object sender, EventArgs e)
{
  if (dataGridView1.SelectedRows.Count < 1 || dataGridView1.SelectedRows[0].Cells[1].Value == null)
  {
    MessageBox.Show("没有选中行。", "M营销");
  }
  else
  {
    object oid = dataGridView1.SelectedRows[0].Cells[0].Value;
    if (DialogResult.No == MessageBox.Show("将删除第 " + (dataGridView1.CurrentCell.RowIndex + 1).ToString() + " 行,确定?", "M营销", MessageBoxButtons.YesNo))
    {
      return;
    }
    else
    {
      string sql = "delete from ycyx where ID=" + oid;
      int ret = achelp.ExcuteSql(sql);
    }
    string sql1 = "select * from ycyx";
    databind1(sql1);
  }
}

查询;

private void button13_Click(object sender, EventArgs e)
{
  if (textBox23.Text == "")
  {
    MessageBox.Show("请输入要查询的当前品牌", "M营销");
    return;
  }
  else
  {
    string sql = "select * from ycyx where dqpp='" + textBox23.Text + "'";
    DataTable dt = new System.Data.DataTable();
    dt = achelp.GetDataTableFromDB(sql);
    dataGridView1.DataSource = dt;
  }
}

用户确定显示或不显示哪些数据列;

private void button15_Click(object sender, EventArgs e)
{
  if (checkBox1.Checked == true)
  {
    dataGridView1.Columns[1].Visible = true;
  }
  else
  {
    dataGridView1.Columns[1].Visible = false;
  }

  if (checkBox2.Checked == true)
  {
    dataGridView1.Columns[2].Visible = true;
  }
  else
  {
    dataGridView1.Columns[2].Visible = false;
  }

  if (checkBox3.Checked == true)
  {
    dataGridView1.Columns[3].Visible = true;
  }
  else
  {
    dataGridView1.Columns[3].Visible = false;
  }

  if (checkBox4.Checked == true)
  {
    dataGridView1.Columns[4].Visible = true;
  }
  else
  {
    dataGridView1.Columns[4].Visible = false;
  }

  if (checkBox5.Checked == true)
  {
    dataGridView1.Columns[5].Visible = true;
  }
  else
  {
    dataGridView1.Columns[5].Visible = false;
  }

  if (checkBox6.Checked == true)
  {
    dataGridView1.Columns[6].Visible = true;
  }
  else
  {
    dataGridView1.Columns[6].Visible = false;
  }
}

更新数据;

  public partial class Form3 : Form
  {
    private AccessHelper achelp;
    private int iid;

    public Form3()
    {
      InitializeComponent();
      achelp = new AccessHelper();
      iid = 0;
    }

    // 更新
    private void button1_Click(object sender, EventArgs e)
    {
      try
      {
        //UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'WHERE LastName = 'Wilson'
        string sql = "update ycyx set fwhm='"+textBox1.Text+"',khmc='"+textBox2.Text+"',gsdq='"+textBox3.Text+"',dqpp='"+textBox4.Text+
          "',dqtc='"+textBox5.Text+"',dqzt='"+textBox6.Text+"' where ID="+iid;

        int ret = achelp.ExcuteSql(sql);
        if (ret > -1)
        {
          this.Hide();
          MessageBox.Show("更新成功", "M营销");
        }
      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message);
      }

    }

    private void Form3_Load(object sender, EventArgs e)
    {

    }

    public int id
    {
      get { return this.iid; }
      set { this.iid = value; }
    }

    public string Text1
    {
      get { return this.textBox1.Text; }
      set { this.textBox1.Text = value; }
    }

    public string Text2
    {
      get { return this.textBox2.Text; }
      set { this.textBox2.Text = value; }
    }

    public string Text3
    {
      get { return this.textBox3.Text; }
      set { this.textBox3.Text = value; }
    }

    public string Text4
    {
      get { return this.textBox4.Text; }
      set { this.textBox4.Text = value; }
    }

    public string Text5
    {
      get { return this.textBox5.Text; }
      set { this.textBox5.Text = value; }
    }

    public string Text6
    {
      get { return this.textBox6.Text; }
      set { this.textBox6.Text = value; }
    }

    //取消
    private void button2_Click(object sender, EventArgs e)
    {
      this.Hide();
    }
  }
}

注意此处有一个技巧;C# Winform,在窗体之间传值,或在一个窗体中设置另一个窗体的控件的值时,有多种方式;最好方式是如上代码所示;使用.net的getset属性; 

控件是一个窗体的私有变量,不能在另一个窗体中直接访问;为了在a窗体中设置b窗体的控件的值,对b窗体的控件都添加一个带getset的公共属性,就可在a中设置b中控件的值,具体看代码;

以上就是C#对Access进行增删改查的完整示例代码,希望对大家学习C#能有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c
, access
, 窗体
, 增删改查
access增删改查
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-09-19 03:54:32

C#对Access进行增删改查的完整示例_C#教程的相关文章

在.NET中实现增删改查的完整代码

问题描述 在.NET中实现增删改查的完整代码具体的是有两张表,一张学生表,一张老师表,通过查询学生,能显示他的所有老师的信息,通过查询老师,能显示他所带的学生的信息,简单的说就是多对多的关系 解决方案 解决方案二: 把SQL语句写出来不就行了么?解决方案三: 在.net里具体怎么实现?解决方案四: 这个不是.NET的问题,写正确了SQL语句就可以了解决方案五: 怎么写啊,麻烦你说清楚具体的实现过程行吗解决方案六: 设学生表为stu,老师表为tech其中老师编号用num表示:学生表中老师编号为nu

Mongodb + PHP 进行增删改查(CRUD)操作教程

用户使用MongoDB开发应用程序使用的是逻辑结构: ● MongoDB的文档,相当于关系数据库中的一行记录 ● 多个文档组成一个集合,相当于关系数据库中的表 ● 多个集合逻辑上组织在一起就是数据库 在安装配置好MongoDB后,我们开始用PHP来实现对数据库的基本操作.所谓基本操作,自然就是我们常说的增删改查(又称CRUD)了. 一.PHP扩展配置 PHP默认是不带mongodb扩展的,在http://www.php.net/manual/en/mongo.installation.php可以

如何在JTable中实现数据的增删改查,有示例说明最好

问题描述 各位大侠,有人能详细介绍下如何用JTable实现数据的增删改查吗,小弟急求.我要没搞定,明年的咋天就是我的祭日了,悲剧中. 解决方案 解决方案二:看以下DefaultTableModel的API解决方案三:没搞过swing解决方案四:引用楼主tianxiawuzei的回复: 各位大侠,有人能详细介绍下如何用JTable实现数据的增删改查吗,小弟急求.我要没搞定,明年的咋天就是我的祭日了,悲剧中. 鬼啊!!!!解决方案五:试试喔

Android编程连接MongoDB及增删改查等基本操作示例

本文实例讲述了Android编程连接MongoDB及增删改查等基本操作.分享给大家供大家参考,具体如下: MongoDB简介 Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++开发. Mongo安装参考 1)下载安装包文件,解压到某一文件夹下. 官方下载地址:htt

oracle中使用存储过程实现增删改查

为公司一个项目没有接触过oracle的程序员准备的一个oracle如何使用proc实现增删改查 ,简单示例: create table t1 ( sid number not null primary key, sname varchar2(10) ) tablespace test; declare a number :=1; begin loop insert into t1 values(a,'snow'); a:=a+1; exit when a=100; end loop; end;

MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

[正文] 一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据库资源中间. DAO模式实际上是两个模式的组合,即Data Accessor (数据访问者)模式和 Active Domain Object(领域对象)模式.Data Accessor 模式实现了数据访问和业务逻辑的分离:Active Domain Object 模式实现了业务数据的对象化封装. 需要注意的是,DAO设计模式是Java EE中的设计模式

sql2005-eclipse对数据库sql server2005的增删改查

问题描述 eclipse对数据库sql server2005的增删改查 package Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.*; import java.awt.*; import javax.swing.*; public class data extends JFrame implements ActionListener{ //priv

js 如何实现对数据库的增删改查_javascript技巧

JavaScript操作数据库JS操作Access数据库,跟其他语言操作差不多,总结了一下习惯代码,仅供参考学习. 现在在F盘有文件abc.mdf,表名为Student,一共2个字段,Id数字类型主键,stuName文本类型,现对该表进行增删改查的操作: 1.查询 复制代码 代码如下: <HTML> <HEAD> <TITLE>数据查询</TITLE> <Script > var conn = new ActiveXObject("AD

解决dwz增删改查不局部刷新的办法

一个小项目,用到了dwz,苦于官方少于维护且需要一部分前端技术一直没有深挖,迫在眉睫,遇到了跟很多人一样的问题,就是增删改查不能局部刷新,苦恼啊.经多多放查找资料和翻阅源码终于皇天不负有心. 项目使用TP3.1.3 需要做一下修改 找到 Thinkphp/lib/core/Action.class.php 查找 ajaxReturn 方法 注释掉 if(func_num_args()>2) {// 兼容3.0之前用法             $args           =   func_ge