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