При использовании OleDBDataReader для выбора мемо-поля из базы данных Access он возвращает только часть строки. Как я могу получить всю строку?
Это мой код:
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 Database типа memo.
Значение xml всегда содержит только первые символы XML. Я предполагаю, что это первые 256 символов. Очевидно, мне нужны все символы в строке.
Кто-нибудь знает, как это исправить?
Спасибо:)
2 ответа
Проблемой может быть само поле заметки;
Мемо-поля нельзя использовать в агрегированных аргументах (например, Max, Var, Sum и т. Д.). При использовании в итоговых значениях "По группам" в запросе возвращаются только первые 255 символов. Предложения "Имея" и "Где" в функциях агрегирования групп также возвращают только первые 255 символов. Однако использование аргументов "Первый" или "Последний" возвращает всю длину строки.
Это весь оператор SQL?
Сюда;)
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 равно нулю, то: создайте класс, в котором вы получите, и установите значение string и int. а затем использовать его здесь
Myclass {
Public int i{get;set}
}