Оператор мультивставки в команде INSERTC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Оператор мультивставки в команде INSERT

Сообщение Anonymous »

Мне нужно загрузить данные, находящиеся в базе данных SQLite в моем приложении Xamarin, в базу данных Firebird, которая находится на моем компьютере в той же сети Wi-Fi, и я получаю доступ по IP-адресу. Все работает правильно, но время выгрузки очень долгое.
Это строка подключения:

Код: Выделить всё

connessione = @"Server=" + ip_server + @";User=sysdba;Password=XXXXXXXX;Pooling=true;Database=" + ip_server + @":C:\\FirebirdSQL\\Photo.FDB";
Это оператор SQL:

Код: Выделить всё

string _dbPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), VarGlobal.dbSQLITE);
var db = new SQLiteConnection(_dbPath);
FbCommand cmdfb = new FbCommand("INSERT INTO photo (id,rifiddir,immaginebit) VALUES (@id,@rifiddir,@immaginebit)", conn);
cmdfb.Parameters.Add("@id", FbDbType.VarChar);
cmdfb.Parameters.Add("@rifiddir", FbDbType.VarChar);
cmdfb.Parameters.Add("@immaginebit", FbDbType.Binary);
conn.Open();
var tuttelefoto = db.Query("SELECT id,rifiddir,immaginebit FROM Photo");
foreach (var singolafoto in tuttelefoto)
{
cmdfb.Parameters["@id"].Value = singolafoto.Id;
cmdfb.Parameters["@rifiddir"].Value = singolafoto.rifiddir;
cmdfb.Parameters["@immaginebit"].Value = singolafoto.immaginebit;
await cmdfb.ExecuteNonQueryAsync();
}

conn.Close();
Все работает, но на каждую вставку уходит 10 секунд. Я хотел переписать код всего в одну строчку:

Код: Выделить всё

FbCommand cmdfb = new FbCommand(" INSERT INTO PHOTO " +
" SELECT '1', 'one' FROM RDB$DATABASE " +    " UNION ALL SELECT '2', 'two ' FROM RDB$DATABASE " +    " UNION ALL SELECT '3', 'three' FROM RDB$DATABASE " +    " UNION ALL SELECT '4', 'four' FROM RDB$DATABASE ", conn);
Размер фото – максимум 1,5 Мб. Скорость Wi-Fi составляет 166 Мбит/с.
Как вставить поле byte[] в текстовом формате? Может ли это решить мои проблемы? Многие из вас скажут мне не подключаться напрямую к базе данных, а использовать веб-сервис. Я знаю. Но приложение работает только тогда, когда телефон и компьютер находятся в одной сети.

Подробнее здесь: https://stackoverflow.com/questions/790 ... rt-command
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»