我正在使用 C# (Visual Studio 2015) 并与 MS Access 数据库进行通信。我下面的代码工作正常,除了_statusLadder
变量从备忘录数据类型字段返回一个空值(我在 MS Access 中运行相同的查询并提取正确的备忘录值)。
我也试过:
string _statusLadder = "";
有人可以帮我弄清楚如何从 MS Access 中检索备忘录数据类型字段吗?
见代码:
private string retrieveJobByID(int xID)
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "SELECT TOP 1 [ID], [JOB_NUM], [CUSTOMER], [MODELNO], [CREATE_DATE], [MODEL_FAMILY], [VER], [COM_PROTOCOL], [STATUS_LADDER] FROM tbl_job_tables WHERE([ID] = ?)";
command.Parameters.Add("@ID", OleDbType.Integer).Value = xID;
OleDbDataReader reader = command.ExecuteReader();
string _id = "", _jobnum = "", _customer = "", _modelFamily = "", _modelNum = "", _createDate = "", _ver = "", _comProtocol = "";
var _statusLadder = "";
while (reader.Read())
{
_id = reader["ID"].ToString();
_jobnum = reader["JOB_NUM"].ToString();
_customer = reader["CUSTOMER"].ToString();
_modelFamily = reader["MODEL_FAMILY"].ToString();
_modelNum = reader["MODELNO"].ToString();
_createDate = reader["CREATE_DATE"].ToString();
_ver = reader["VER"].ToString();
_comProtocol = reader["COM_PROTOCOL"].ToString();
_statusLadder = reader["STATUS_LADDER"].ToString(); //<-- This returns empty when it should be ~300 characters.
Console.WriteLine("Status is: " + _statusLadder);
}
if (!reader.IsClosed)
{
reader.Close();
}
if (connection.State == ConnectionState.Open) {
connection.Close();
}
string result = _id + "|" + _jobnum + "|" + _customer + "|" + _modelFamily + "|" + _modelNum + "|" + _createDate + "|" + _ver + "|" + _comProtocol + "|" + _statusLadder;
return result;
}
编辑- 这是我的 MS Access 2010 设置 (ACCDB) 的一些图片:
(1) - 第一个显示 SQL 查询。我输入了 ID=116 作为参数
(2) - 第二张图片显示了查询的结果。您可以看到“STATUS_LADDER”返回了正确的值。
(3) - 这是字段“STATUS_LADDER”的表设置(在设计模式下)