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 データベース テーブル列です。

xml の値には、常に XML の最初の文字のみが含まれます。最初の256文字だと思います。明らかに、文字列内のすべての文字が必要です。

誰でもこれを修正する方法を知っていますか?

ありがとう :)

4

2 に答える 2

6

メモ フィールド自体に問題がある可能性があります。

メモ フィールドは、集計引数 (Max、Var、Sum など) では使用できません。クエリの「Group By」合計で使用すると、最初の 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 の値が null の場合: string と int の値を取得および設定するクラスを作成します。そして、ここでそれを使用します

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