У меня есть два приложения с несколькими базами данных, простое объяснение:
- Основное приложение: получить информацию из базы данных (firebase или SQLServer) и отправить через сокет клиента во второе приложение.
- Показать приложение: получить информацию о сокете и вставить в базу данных SQLite, после того, как покажет данные в WinForm.
Моя проблема иногда Sqlite имеет ошибку при вставке (База данных заблокирована), потому что мне нужно много вставок за короткое время.Я работаю в автомате выплат, и если машина получает 0,5 €, мне нужно быстро отправить на дисплей.
Я использую Сервер MDSN , и этот модифицированный код:
if (content.IndexOf("<EOF>") > -1)
{
//This is amount to pay
string searchString = "<EOF>";
int endIndex = content.IndexOf(searchString);
s = content.Substring(0, endIndex);
string insertar = "INSERT INTO transacciones " +
"VALUES ('" + DateTime.Today + "','" + s + "',NULL);";
//Insert
SQLite bd = new SQLite();
bd.Insert(insertar);
Send(handler, content);
}
else if (content.IndexOf("<REC>") > -1)
{
//This is the pay
SQLite bd = new SQLite();
string searchString = "<REC>";
int endIndex = content.IndexOf(searchString);
s = content.Substring(0, endIndex);
int id = bd.GetId();
string insertar = "UPDATE transacciones " +
"SET cobrado= '" + s + "' WHERE ROWID=" + id + ";";
//Update
bd.Insert(insertar); //here i have the problem
Send(handler, content);
}
когда я вставляю в платежный автомат много монет, мое приложение для отображения начинает работать медленно и около шестого обновления (иногда более или менее) я получаю ошибку:
SQLiteошибка (5): база данных заблокирована
Функция вставки:
public Boolean Insert(string sql)
{
try
{
SQLiteConnection con = new SQLiteConnection("data source=" + Datos.dataBase + "\\bdDisplay.sqlite;Version=3;New=False;Compress=True;");
con.Open();
SQLiteCommand command = new SQLiteCommand(sql, con);
command.ExecuteNonQuery();
command.Dispose();
con.Close();
return true;
}
catch (SQLiteException ex)
{
MessageBox.Show("Error Insert: " + ex.Message);
return false;
}
}
Может быть, ошибка возникает из-за не параметризатора?Или приходит от слишком большого количества операций?в этом случае я могу сделать что-то для отладки?