C#连接Access数据库 查询和新增 示例

news/2025/2/6 17:05:52/文章来源:https://www.cnblogs.com/hailexuexi/p/18203751

C#连接Access数据库 查询和新增 示例

项目中需要做一个写程序操作日志的需求,仅本机使用。这时Access数据库就是一个非常好的选择,简单,好用。

下面仅仅是一个示例,简单写出 查询 和 新增 等 C#操作 Access 数据库的 代码

效果图

 clsDBHelperAccess.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OleDb;
using System.Data;namespace myClass
{class clsDBHelperAccess{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 clsDBHelperAccess(){conn_str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\我的文档\Visual Studio 2008\Projects\AccessOperator\AccessOperator\bin\Debug\myDb.mdb'";InitDB();}/// <summary>  /// 构造函数  /// </summary>  /// <param name="db_path">数据库路径</param> public clsDBHelperAccess(string db_path){conn_str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + db_path + "'";InitDB();}private void InitDB(){ole_connection = new OleDbConnection(conn_str); //创建实例  ole_command = new OleDbCommand();}/// <summary>  /// 转换数据格式  /// </summary>  /// <param name="reader">数据源</param>  /// <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">列的个数</param>  /// <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">查询语句</param> /// <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());///clsLogHelper.m_CreateErrorLogTxt("clsDBHelperAccess ", "GetDataTableFromDB", e.Message.ToString()); }finally{if (ole_connection.State != ConnectionState.Closed){ole_connection.Close();}}return dt;}/// <summary> /// 执行sql语句 /// </summary> /// <param name="strSql">sql语句</param> /// <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());//clsLogHelper.m_CreateErrorLogTxt("clsDBHelperAccess ", "ExcuteSql", e.Message.ToString());return nResult;}finally{if (ole_connection.State != ConnectionState.Closed){ole_connection.Close();}}return nResult;}}}

Form1.cs  窗体中的部分主要代码

     private void butSelect_Click(object sender, EventArgs e){DataTable dt =  Select("2024-01-01 00:00:00", "2024-12-30 00:00:00");if (dt == null)MessageBox.Show("查询信息发生异常!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);else if (dt.Rows.Count <= 0){this.dataGridView1.DataSource = dt;MessageBox.Show("没有符合条件的信息!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);}else{this.dataGridView1.DataSource = dt;this.lblRowCount.Text = dt.Rows.Count.ToString();}}//按 时间public DataTable Select(string strStartTime,string strStopTime){try{string strSql = "";string strCol = "*";string strWhere = " ( date_time>='" + strStartTime + "' and date_time<='" + strStopTime + "') ";strSql = "select " + strCol + " from operation_log where  " + strWhere;//return DbHelperSQL.Query(strSql).Tables[0];string path = System.Windows.Forms.Application.StartupPath + @"\data\lansever_db.mdb";myClass.clsDBHelperAccess Helper = new myClass.clsDBHelperAccess(path);return Helper.GetDataTableFromDB(strSql);}catch (System.Exception e){return null;}}private void butAdd_Click(object sender, EventArgs e){int intResult = Add();if (intResult >= 1){MessageBox.Show("添加成功!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);}else{MessageBox.Show("添加失败!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);}}//添加一条数据public int Add(){try{string strId = System.Guid.NewGuid().ToString();string strSize = "AAAAAA";string strDateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");string strButton = "BBBBB1";string strType = "CCCCCC2";string strRemarks = "";string strSql = "";strSql += "insert into operation_log (id,site,date_time,button,type,remarks ";strSql += " ) values( ";strSql += " '" + strId + "','" + strSize + "','" + strDateTime + "','" + strButton + "','" + strType + "','" + strRemarks + "' ";strSql += "  )";string path = System.Windows.Forms.Application.StartupPath + @"\data\lansever_db.mdb";myClass.clsDBHelperAccess Helper = new myClass.clsDBHelperAccess(path);return Helper.ExcuteSql(strSql);}catch (System.Exception e){return 0;}}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/709993.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE4 动态生成网格

说明 在游戏中动态改变网格数量和形状等,该功能是寻路功能的前期准备,即在基础移动地基上方,构建一层网格,任何移动的操作都可以基于该网格进行计算。从而在编辑器模式下能够更方便进行调试 InstancedStaticMeshComponent 其是一种用于优化静态网格渲染性能的技术。Instanc…

FormCreate中在事件中获取api

FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。支持5个UI框架,并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定form-create中在事件中获取api FormCreate 是一个可以通过 JSON 生成具…

【最新】别再发邮件了,必须在开源之夏后台申请,50%的人竟然都没有报名成功!

引言 近期我们注意到很多学生朋友通过邮件向导师申请报名,请注意!!!​这是无效的,请必须通过“开源之夏”官方后台申请报名,请仔细参考这篇【报名攻略】 所以,我们特此举办这次宣讲会,目的是向所有感兴趣的学生详细介绍Apache DolphinScheduler社区在开源之夏中提供的项…

Flink富函数

富函数是DataStream API提供的函数接口,Flink的函数都有它的Rich版本,它与其他函数不同的是,富函数可以获取到运行环境上下文,初始化参数,拥有生命周期方法等,可通过它进行自定义复杂功能。我们常见的如RichMapFunction、RichFilterFunction等。富函数的生命周期主要通过…

C#如何用最简单方法调用Python?

最近有群友咨询C#如何调用Python?小编尝试Python.NET过程中遭遇的版本兼容性和环境配置难题,小编决定寻找一个更为简单、稳定且对初学者友好的解决方案。小编搜索一番,除了Python.NET之外,还有其他途径能够帮助我们轻松地在C#项目调用Python脚本,那就是通过命令行调用,使…

创建你的-Mysql-数据库-全-

创建你的 Mysql 数据库(全)原文:zh.annas-archive.org/md5/853FEC9D976A75004408D5A9A661EDD8 译者:飞龙 协议:CC BY-NC-SA 4.0前言 1995 年发布的 MySQL 已成为最受欢迎的开源数据库系统。MySQL 和 phpMyAdmin 的普及使得许多非 IT 专家能够使用 MySQL 后端构建动态网站。…

【Unreal】虚幻GAS系统快速入门

【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!前言最近在用UE做单机ARPG的战斗系统,研究了一下GAS。本文主要介绍GAS各个模块的用途,以及特定功能的多种实现方法。为了让大部分人能…

[CISCN 2022 初赛]online_crt crash漏洞引起的命令执行

几天没做题了,有点生疏。看题吧。题目标签说是CVE-2022-1292,去看看。意思就是在$fname处构造恶意文件名导致的命令注入,而且前面没有认真过滤,也就是文件名命令执行。 看看题目源码:点击查看代码 import datetime import json import os import socket import uuid from …

团队作业5——测试与发布(Alpha版本)

这个作业属于哪个课程 软件工程这个作业要求在哪里 团队作业5——测试与发布(Alpha版本)这个作业的目标 Alpha版本测试报告、发布说明团队Gitee仓库链接 Gitee鏈接团队成员:姓名 学号蔡梓严(队长) 3122004686刘睿 3122004697吴炳辉 3122004709陈翼 3122006207林诗芸 322200…

解锁你的数据库:JPA和Hibernate的乐观锁与悲观锁

哈喽,大家好,我是木头左!引言 在当今的软件开发领域,数据库操作是不可或缺的一部分。然而,随着并发操作的增加,如何正确地处理并发问题是每个开发者都需要面对的挑战。本文将深入探讨JPA(Java Persistence API)和Hibernate这两种ORM(对象关系映射)工具中的乐观锁和悲…

易基因:WGBS+ChIP-seq等表观组分析揭示FOXM1 是抗肿瘤免疫应答的关键调控因子

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 食管癌是一种常见的恶性肿瘤,包括两种主要的组织学亚型:食管鳞状细胞癌(squamous cell carcinoma,ESCC)和食管腺癌(adenocarcinoma,EAC)。近两年来对抗肿瘤免疫应答机制的理解得到了显著提高,免疫检查…

Merry Christmas 礼物

Merry Christmas 圣诞快乐!! 我的圣诞礼物,yes~Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` Merry Christmas 礼物 日期:2020-12-25 阿珏 谈天说地 浏览:340次 评论:3条 M…