Войти

Показать полную графическую версию : ADO.NET запись в Access


veter48
04-05-2012, 00:22
Здравствуйте. Есть база данных Access. Через c#.net подключаюсь к ней через. Выбрать данные получилось, а вот записать никак! Делал с начала с запросом с параметрами, но ничего не получилось. Теперь пробую вот так просто:
string connectString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\\db_kl.mdb";

public bool AddNewClientIntoDB()
{
bool flag = false;
using (OleDbConnection conn = new OleDbConnection(connectString))
{
string query = "INSERT INTO Klienti (KlName, KSureName, KlPhone, KlAdress, KlEmail) VALUES ('Andris','Dzied','22222123','London Matisa 120','a@aaa.net')";
OleDbCommand comm = new OleDbCommand(query, conn);

try
{
conn.Open();
if (comm.ExecuteNonQuery() == 1)
flag = true;
}
catch { }
}

return flag;
}
Но не получается, запись но добавляется. Попробовал выполнить этот запрос в Access Query и все работает. В чем может быть дело?

Delirium
04-05-2012, 01:14
Но не получается, запись не добавляется »
Запрос проходит успешно или вываливается в заглушку catch ?

veter48
04-05-2012, 11:36
Спасибо, убрал try catch. и увидел ошибку. В таблице стоит правило ввода на поле KlEmail. Я ввожу правильный адрес но не проходит, в чем может быть дело?

oledbexception was unhandled
Неверный формат е-майла
В таблице Access:
Validation rule: ((Like "*?@?*.?*") And (Not Like "*[ ,;]*"))
Validation text: Неверный формат е-майла

Delirium
05-05-2012, 00:52
(Like "*?@?*.?*")
МОжет быть, все таки (Like "?*@?*.?*") ?
Убери для начало проверку, а потому, если сработает, возвращай и колдуй над ней.
А try...catch удалять не надо, лучше приведи заглушку в правильный вид:

catch(oledbexception ex)
{
MessageBox.Show(ex.Message);
}
catch(exception ex2)
{
MessageBox.Show("Другие ошибки:" + ex2.Message);
}

Так ты сможешь видеть ошибки без вылета из кода.




© OSzone.net 2001-2012