C#调用Access数据库时出现乱码。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#调用Access数据库时出现乱码。相关的知识,希望对你有一定的参考价值。

我用C#调用名为program.accdb的数据库到datagridview时,只在“项目成员”一栏中出现了乱码。该字段为多值字段。请问这应该如何解决?
部分代码贴出:
private void databaseConnection()

string conPath = "provider=Microsoft.ACE.OLEDB.12.0;";
conPath += @"Data Source=program.accdb";
OleDbConnection connection = new OleDbConnection(conPath);
connection.Open();
string commandStr = "select * from 项目表";
OleDbDataAdapter oda = new OleDbDataAdapter(commandStr , connection );
DataSet ds = new DataSet();
oda.Fill(ds);
dataGridView1.DataSource = ds.Tables[0].DefaultView;

你看看是不是数据库表的“项目成员”格式出了问题,数据类型看看是不是有问题,还有你指的多值是什么意思,如果是多个值得话,需要再建立一个表,建立起映射关系追问

Access2010中可以用多值,这个多值的确是另外一个表“用户表”的内容(一部分),有映射关系。该“项目成员”字段在C#datatable中的映射类型为string,这个我查了。

追答

我之前用的是2007,本质上2010没有变,是不是数据格式的问题,你试试纯文本的,看行不

追问

我试着用“select 项目成员.value from 项目表”,可以正确读取,但是读取的成员内容不在一个单元格内。用“select 项目成员 from 项目表”则无法正确读取。

追答

那应该是你的SQL语句有问题,你找本数据库的书来查一下就知道了

参考技术A 调整字符编码 参考技术B 尝试一下 encoding 修改一下?

尝试从 C# 调用 C++ dll 时出现格式不正确的异常

【中文标题】尝试从 C# 调用 C++ dll 时出现格式不正确的异常【英文标题】:Incorrect format Exception while trying to call C++ dll from C# 【发布时间】:2016-04-13 08:34:42 【问题描述】:

我正在使用 C# WPF。 我有一个 C++ 测试 dll 如下: .h:

extern "C" __delspec(dllexport) void TestMethod();

.cpp 文件:

extern "C"

    __delspec(dllexport) void TestMethod()
    
        MessageBox(0, L"Test", L"Test", MB_ICONINFORMATION);
    

C# 代码:

[DllImport("DllTest.dll", EntryPoint = "TestMethod")]
public static extern void TestMethod();

当我尝试调用 TestMethod 时出现异常:

an attempt was made to load a program with an incorrect format

我做错了什么? 谢谢!

【问题讨论】:

我有类似[DllImport("DllTest.dll", CallingConvention = CallingConvention.Cdecl)] 的东西。指定调用约定有帮助吗? 【参考方案1】:

这似乎是32bit/ 64 bit 问题。似乎您的 C++ dll 和 C# 调用程序集是为不同的平台目标构建的。尝试为同一平台(x86 或 x64)编译两者,然后调用该函数。

【讨论】:

谢谢!!!.. 我用另一个问题编辑我的帖子,如果我有多个函数,我需要替换什么 [DllImport("DllTest.dll", EntryPoint = "TestMethod" )] ? @Evyatar 最好将其作为单独的问题发布。我们更喜欢一个问题一个问题的格式:) @CompuChip,是的..我问了一个新问题:P

以上是关于C#调用Access数据库时出现乱码。的主要内容,如果未能解决你的问题,请参考以下文章

当我尝试通过 C# 将日期插入 Access 数据库时出现“INSERT INTO 语句中的语法错误”错误

使用 C# windows 窗体向 Ms Access 数据库插入新记录时出现语法错误

错误:从不同方法执行选择器时出现 EXC_BAD_ACCESS

如何从 C# 调用 MS Access 数据库宏

从 Access 数据库中读取字段时出现 IndexOutOfRangeException

将 MySQL 数据导入 Access 2010 时出现问题