4

这是我的代码:

OleDbConnection connection = new OleDbConnection(
   "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\\Offline.accdb;Persist Security Info=False");
connection.Open();
OleDbCommand command = connection.CreateCommand();
command.CommandText = "SELECT DISTINCT B.* FROM BlankFormSubmissions B, Actions A WHERE A.FormName = 'FindingNemo' AND B.ProcessName = A.ProcessName AND B.ActionName = A.ActionName AND B.ID = 12 OR B.ID = 13 OR B.ID = 14 ORDER BY B.ID";
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
    string xml = (string)reader["XML"];
    // ... do something with xml
}

“XML”列是一个 Access 数据库表列,类型为 memo。

xml 的值始终只包含 XML 的第一个字符。我猜这是前 256 个字符。显然,我需要字符串中的所有字符。

有人知道怎么修这个东西吗?

谢谢 :)

4

2 回答 2

6

问题可能出在备忘录字段本身;

备注字段不能用于聚合参数(如 Max、Var、Sum 等)如果在查询中的“分组依据”总计中使用,则仅返回前 255 个字符。Group Aggregate 函数中的“Having”和“Where”子句也只返回前 255 个字符。但是,使用“First”或“Last”参数会返回字符串的完整长度。

这是整个 SQL 语句吗?

于 2011-03-01T13:47:28.050 回答
0

这边走;)

 OleDbCommand sqlcmdCommand1 = new OleDbCommand("select stmt", sqlconConnection);
        sqlcmdCommand1.CommandType = CommandType.Text;
        try
        {
            sqlconConnection.Open();
            OleDbDataReader sdaResult = sqlcmdCommand1.ExecuteReader();
            myclass a = new myclass();
            while (sdaResult.Read())
            {

               a.i = sdaResult.GetString(2);
               or 
               int i = sdaResult.GetString(2)); 
              // 2 is the index of your column, in general start from 0;'
            }

如果这不起作用,我的意思是如果您的 my_memo_value 的值为空,那么:创建一个类,您可以在其中获取并设置字符串和 int 的值。然后在这里使用 Like

Myclass {
Public int i{get;set}
}
于 2011-03-01T14:00:29.587 回答