powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Работа с .mdb через ADO.NET
4 сообщений из 4, страница 1 из 1
Работа с .mdb через ADO.NET
    #32774516
Alex Kostikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В MSAccess создаю таблицу Result, поля:
Code, No – числовые
Var,Val – текстовые
ключевое поле отсутствует.

Вот код программы, вызывающий исключение, помогите пожалуйста понять, почему выставился флаг HasErrors и как все-таки сохранить результаты:

Обработчик кнопки:

if( openFileDialog1.ShowDialog() != DialogResult.OK ) return;

string conStr = "provider=Microsoft.JET.OLEDB.4.0; " + "data source=" + openFileDialog1.FileName;
string selStr = "SELECT * FROM Result";

OleDbConnection con = new OleDbConnection(conStr);
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = new OleDbCommand(selStr,con);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);

con.Open();

DataSet ds = new DataSet();
da.Fill(ds, "Result");
dataGrid1.DataSource = ds.Tables["Result"].DefaultView;
// отображает правильно

object[] rowVals = new object[4];
rowVals[0] = 5;
rowVals[1] = 5;
rowVals[2] = "value";
rowVals[3] = "value";
ds.Tables["Result"].Rows.Add(rowVals);
// если поставить задержку, то покажет новый ряд

DataSet changes = ds.GetChanges();
// в changes правильно заностся новый ряд
string s = "";
try
{
da.Update(changes, "Result");
}
catch( OleDbException oleE )
{
s = "Message: " + oleE.Message + "\n" +
"Sourse: " + oleE.Source + "\n" +
"Command: " + cb.GetInsertCommand().CommandText + "\n" +
"Errors in changes: " + changes.HasErrors;
MessageBox.Show(s);
// на главной форме слева на dataGrid1 во введенном ряду стоит !
}
finally
{
con.Close();
}

s получает значение:

Message: Ошибка синтаксиса в инструкции INSERT INTO.
Sourse: Microsoft JET Database Engine
Command: INSERT INTO Result( Code , No , Var , Val ) VALUES ( ? , ? , ? , ? )
Errors in changes: True
...
Рейтинг: 0 / 0
Работа с .mdb через ADO.NET
    #32774524
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты используешь в качестве имени поля название функции Var.
добавь 2 строки:
Код: plaintext
1.
2.
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
cb.QuotePrefix="[";
cb.QuoteSuffix="]";
...
Рейтинг: 0 / 0
Работа с .mdb через ADO.NET
    #32774648
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще [Val]
...
Рейтинг: 0 / 0
Работа с .mdb через ADO.NET
    #32776383
Alex Kostikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, помогло
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Работа с .mdb через ADO.NET
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]