c# 操作Microsoft Access数据库

数据库结构为:

cs 复制代码
public static string connting = "数据库路径:如:D:\\xxx.mdb";

//插入
  public bool InsertToFile(string casenumber, int lastrowid, int pagecount)
        {

 bool result = true;

 try
            {
                string connString = $"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={connting};";
                using (var conn = new OleDbConnection(connString))
                {
                    conn.Open();
                    var sql = @"INSERT INTO [file] (
        [顺序号], [案卷号], [案卷题名], [卷内页数文件], [卷内页数图纸], [卷内页数其他],[备注]) VALUES (
        @value1, @value2, @value3, @value4, @value5, @value6,
        @value7)";
                    using (var cmd = new OleDbCommand(sql, conn))
                    {
                        cmd.Parameters.Add(new OleDbParameter("@value1", OleDbType.Integer) { Value = 1 });
                        cmd.Parameters.Add(new OleDbParameter("@value2", OleDbType.VarChar) { Value = casenumber });
                        cmd.Parameters.Add(new OleDbParameter("@value3", OleDbType.VarChar) { Value = "目录索引" });
                        cmd.Parameters.Add(new OleDbParameter("@value4", OleDbType.Integer) { Value = pagecount });
                        cmd.Parameters.Add(new OleDbParameter("@value5", OleDbType.Integer) { Value = 0 });
                        cmd.Parameters.Add(new OleDbParameter("@value6", OleDbType.VarChar) { Value = "" });
                        cmd.Parameters.Add(new OleDbParameter("@value7", OleDbType.VarChar) { Value = "" });
                        cmd.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception ex)
            {
                result = false;
                Logger.Error("插入[file]表异常!详情:" + ex.Message);
            }
            return result;


}

//查询
public void QueryData()
{
    try
    {
        string connString = $"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={connting};";
        using (var conn = new OleDbConnection(connString))
        {
            conn.Open();
            var sql = "SELECT * FROM [file] WHERE [顺序号] = @orderNumber";
            using (var cmd = new OleDbCommand(sql, conn))
            {
                cmd.Parameters.Add(new OleDbParameter("@orderNumber", OleDbType.Integer) { Value = 1 });
                using (var reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        // 处理查询结果
                        string casenumber = reader.GetString(reader.GetOrdinal("案卷号"));
                        string title = reader.GetString(reader.GetOrdinal("案卷题名"));
                        // 其他列的处理类似
                        
                        Console.WriteLine($"案卷号: {casenumber}, 案卷题名: {title}");
                    }
                }
            }
        }
    }
    catch (Exception ex)
    {
        Logger.Error("查询[file]表异常!详情:" + ex.Message);
    }
}

//修改
public bool UpdateData(string casenumber, int pagecount)
{
    bool result = true;
    try
    {
        string connString = $"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={connting};";
        using (var conn = new OleDbConnection(connString))
        {
            conn.Open();
            var sql = "UPDATE [file] SET [卷内页数文件] = @pagecount WHERE [案卷号] = @casenumber";
            using (var cmd = new OleDbCommand(sql, conn))
            {
                cmd.Parameters.Add(new OleDbParameter("@pagecount", OleDbType.Integer) { Value = pagecount });
                cmd.Parameters.Add(new OleDbParameter("@casenumber", OleDbType.VarChar) { Value = casenumber });
                int rowsAffected = cmd.ExecuteNonQuery();
                if (rowsAffected == 0)
                {
                    result = false;
                    Logger.Error("未找到符合条件的记录!");
                }
            }
        }
    }
    catch (Exception ex)
    {
        result = false;
        Logger.Error("更新[file]表异常!详情:" + ex.Message);
    }
    return result;
}

这里需要注意的点就是字段类型,注意代码中的类型和数据库类型保持一致,否则插入会异常

枚举为:

cs 复制代码
public enum OleDbType
    {
        BigInt = 20,
        Binary = 0x80,
        Boolean = 11,
        BSTR = 8,
        Char = 129,
        Currency = 6,
        Date = 7,
        DBDate = 133,
        DBTime = 134,
        DBTimeStamp = 135,
        Decimal = 14,
        Double = 5,
        Empty = 0,
        Error = 10,
        Filetime = 0x40,
        Guid = 72,
        IDispatch = 9,
        Integer = 3,
        IUnknown = 13,
        LongVarBinary = 205,
        LongVarChar = 201,
        LongVarWChar = 203,
        Numeric = 131,
        PropVariant = 138,
        Single = 4,
        SmallInt = 2,
        TinyInt = 0x10,
        UnsignedBigInt = 21,
        UnsignedInt = 19,
        UnsignedSmallInt = 18,
        UnsignedTinyInt = 17,
        VarBinary = 204,
        VarChar = 200,
        Variant = 12,
        VarNumeric = 139,
        VarWChar = 202,
        WChar = 130
    }
相关推荐
IvanCodes1 小时前
Python 数据处理(十三):JSON、CSV 与数据序列化
开发语言·python
aramae3 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
十二同学啊3 小时前
向量数据库:从核心原理到 RAG 与 Java 实战
数据库
淡海水4 小时前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
蓝速科技4 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
asdzx675 小时前
如何使用 C# 提取 PPT 文本与图片
c#·ppt·提取文本
qq_2518364575 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
郑州光合科技余经理6 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
知识分享小能手6 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
+VX:Fegn08956 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计