Оператор множественной вставки FirebirdSQL в команде INSERTC#

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

Сообщение Anonymous »

Мне нужно загрузить данные, находящиеся в базе данных sqlite в моем приложении Xamarin, в базу данных firebirdsql, которая находится на моем компьютере в той же сети 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 Мбит/с.
Как вставить байт[ ] поле в текстовом формате? Может ли это решить мои проблемы?
Многие из вас скажут мне не подключаться напрямую к базе данных, а использовать веб-сервис. Я знаю. Но приложение работает только тогда, когда телефон и компьютер находятся в одной сети. Спасибо

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Оператор мультивставки в команде INSERT
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как развернуть приложение Visual Studio и установить firebirdsql как службу в автоматическом режиме
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Java.lang.ClassNotFoundException: org.firebirdsql.jdbc.FBDriver
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Symfony2 + ДБАЛ. Как использоватьbindValue для множественной вставки?
    Anonymous » » в форуме Php
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Спящий режим: объединить последовательные операторы INSERT в многозначный INSERT
    Anonymous » » в форуме JAVA
    0 Ответы
    59 Просмотры
    Последнее сообщение Anonymous

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