Подключить библиотеку Sqlite

  • Автор темы Автор темы myweb101
  • Дата начала Дата начала

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Реакции
30
Баллы
28
Здравствуйте, как подключить библиотеку Sqlite?
Пожалуйста, приведите пример реализации на простом примере.
А то работать через командную строку стало очень неудобно:
постоянно всплывающие окна уже бесят,
экспорт идет в ANSI,
длина текста командной строки ограничена и множество багов при многопоточном режиме.
Я хочу portable реализацию, на MSSQL неудобно.
 
Дам на ПИВО 30$ кто первый напишет рабочею реализацию!
Пример SELECT * FROM
Пример INSERT c ecape
Пример Export to CSV со своими разделителями
Пример Import from CSV
 
Дам на ПИВО 30$ кто первый напишет рабочею реализацию!
Пример SELECT * FROM
Пример INSERT c ecape
Пример Export to CSV со своими разделителями
Пример Import from CSV
Вот пример:

Код:
Развернуть Свернуть Копировать
string result = String.Empty;

string connectionString = project.Variables["connectionString"].Value;

var query = new DataTable();
try
{
    using (var sqLiteConnection = new System.Data.SQLite.SQLiteConnection(connectionString))
    {
        sqLiteConnection.Open();
        using (var cmd = new System.Data.SQLite.SQLiteCommand(sqLiteConnection) {CommandText = "Select * from Table"})
        {
            var reader = cmd.ExecuteReader();
            query.Load(reader);
        }
    }
}
catch(Exception ex)
{
    project.SendErrorToLog(ex.Message, "sqlite error");
    return result;
}

DataRow[] data = query.Select();

foreach (DataRow row in data)
{
    if (!String.IsNullOrWhiteSpace(result)) result = String.Format("{0}\r\nid: {1}; name: {2}", result, row["id"], row["name"]);
    else result = String.Format("id: {0}; name: {1}", row["id"], row["name"]);
}

return result;

Могут быть ошибки
 

Вложения

  • Оценить
Реакции: orka13
У меня не работает. Ругается не удается загрузить некоторые сборки проекта.
0.jpg

Чтобы подключить sqlite нужно скачать https://sqlite.org/2014/sqlite-dll-win32-x86-3080403.zip
Распокавать dll в папку "c:\Program Files (x86)\ZennoLab\ZennoPoster Pro\Progs\" Так???
Так и не поятно, что делает шаблон. И как им пользоваться.
1. Где в коде подключается БД. Физическое местоположение. C:\Mybase.db
2.

Код:
Развернуть Свернуть Копировать
foreach (DataRow row in data)
{
    if (!String.IsNullOrWhiteSpace(result)) result = String.Format("{0}\r\nid: {1}; name: {2}", result, row["id"], row["name"]);
    else result = String.Format("id: {0}; name: {1}", row["id"], row["name"]);
}
А это что выполняет?

Ладно. Более подробнее распишу, что мне нужно.
1. Есть БД - расположенное на C:\Mybase.db. Подключаемся.
2. Создадим таблицу - table1

Код:
Развернуть Свернуть Копировать
CREATE TABLE [table1] (
  [field1] TEXT,
  [field2] TEXT,
  CONSTRAINT [] PRIMARY KEY ([field1]) ON CONFLICT REPLACE);

3. Вставить значения:
Чтобы уже в коде происходил ecape значений.
Код:
Развернуть Свернуть Копировать
INSERT INTO table1 VALUES('{-Variable.url1-}','{-Variable.url2-}')

4. Сделать выборку и запихнуть в таблицу Zenno Таблица1
Код:
Развернуть Свернуть Копировать
SELECT * FROM table1

5. Возможно ли не пихать в таблицу Zenno, а сохранить физический со своими разделителями.
Код:
Развернуть Свернуть Копировать
SELECT * FROM table1
C:\export.csv

6. Как сделать импорт данных из C:\export2.csv с разделителем столбцов ~~~
Можно конечно через CMD, но как ?

Предложение все еще в силе. Вы поможете не только мне, а так же другим участникам, ну и получите данный бонус.

В С++ я вообще ничего не смыслю. Сильно не пинайте, и напишите пожалуйста комментарии к коду:)
 
Ахахахах))) я знал! я знал что так оно все и обернется)))
Для того чтобы сделать обвязку между IZennoTable и внешней базой данных надо порядком погеммороиться, при чем настолько порядком, что лично для меня становится сомнительным использование зеннопостера как инструмента и уже проще сразу на шарпе делать...

Совет))) простой и удобный) делайте экспорт через майадмин на локальном сервере в csv работайте с таблицей как вам там надо, а потом этот csv импортируйте обратно в базу)
Самый простой, легко реализуемый и удобный в данном случае вариант.

Не думаю что у вас там в базе Big Data так что зенка должна справиться)))
 
Нафиг тогда импорт. Сделаем экспорт в файл и привяжем его.
У меня 2 рабочих места и удаленный сервер. Синхронизация происходит через Dropbox. Вешать еще веб-сервис. Столько костылей. Просто хочется портативную версию. И упростить код. Хотя бы реализовать такие простые операции INSERT и SELECT c экспортом в CSV со своими разделителями.
 

Вложения

  • Оценить
Реакции: myweb101
Код shade работает!!! Проблема была в том, что у меня Win7 x64. и только непонятные задержки в PM при добавлении строки.
 
Последнее редактирование:
Может кому интересно , я немного переделал шаблон
MYSQL теперь данные попадают в таблицу zenno
Шаблон приведенный выше, "по моей логике" работает не правильно. Может кто меня поправит? Шаблон работает правильно? У меня в тестах данные отдаются нормально.
 

Вложения

Пытаюсь сделать по аналогии с MySQL , но не получается, может кто поправит?

Код:
Развернуть Свернуть Копировать
string result = String.Empty;

string connectionString = project.Variables["connectionString"].Value;
string SQL = project.Variables["SQL"].Value;

var query = new DataTable();
try
{
    using (var sqLiteConnection = new System.Data.SQLite.SQLiteConnection(connectionString))
    {
        sqLiteConnection.Open();
        using (var cmd = new System.Data.SQLite.SQLiteCommand(sqLiteConnection) {CommandText = SQL})
        {
            var reader = cmd.ExecuteReader();
            query.Load(reader);
        }
    }
}
catch(Exception ex)
{
    project.SendErrorToLog(ex.Message, "sqlite error");
    return result;
}
if (result != String.Empty) return result;
try
{
 
    var reader = query.Select.ExecuteReader();
   
    StringBuilder sb = new StringBuilder();
    int i = 0;
   
    IZennoTable table = project.Tables["Table1"];
   
    while (reader.Read())
    {
        i++;
       
        sb.AppendLine(String.Format("{1}\t{2}", i, reader["field1"], reader["field2"]));
       
        result = sb.ToString();
        table.AddRow(String.Format("{1}\t{2}", i, reader["field1"], reader["field2"]));
        result = String.Empty;
    }
    reader.Close();

}
catch (System.Data.SQLite.SQLiteException e)
{
    // словили
    result = String.Format("SQLite reader exception: {0}", e.Message);
}
finally
{
    // что бы не произошло закроем соединение
    using (var sqLiteConnection = new System.Data.SQLite.SQLiteConnection(connectionString))
    {
    sqLiteConnection.Close();
    }
}
// вернём результат
return result;
 
Доперло как:-) Это код для SQLite
Теперь можно переносить данные в таблицу. Но только остался один не решенный вопрос, почему не работает ORDER BY и виной тому этот код, а не запрос.
Код:
Развернуть Свернуть Копировать
SELECT * FROM table7 ORDER BY field3 ASC
10 столбцов в таблице
Код:
Развернуть Свернуть Копировать
string result = String.Empty;

string connectionString = project.Variables["connectionString"].Value;
string SQL = project.Variables["SQL"].Value;

var query = new DataTable();
try
{
   using (var sqLiteConnection = new System.Data.SQLite.SQLiteConnection(connectionString))
  {
     sqLiteConnection.Open();
  using (var cmd = new System.Data.SQLite.SQLiteCommand(sqLiteConnection) {CommandText = SQL})
  {
     var reader = cmd.ExecuteReader();
  query.Load(reader);
  }
  }
}
catch(Exception ex)
{
   project.SendErrorToLog(ex.Message, "sqlite error");
   return result;
}
if (result != String.Empty) return result;
try
{
IZennoTable table = project.Tables["Table1"];
DataRow[] data = query.Select();

foreach (DataRow row in data)
{
   if (!String.IsNullOrWhiteSpace(result))   {
     result = String.Format("{0}\r\n{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\t{9}", result, row["field1"], row["field2"], row["field3"], row["field4"], row["field5"], row["field6"], row["field7"], row["field8"], row["field9"], row["field10"]);
     table.AddRow(result);
     result = String.Empty;
   }
   else {
     result = String.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\t{9}", row["field1"], row["field2"], row["field3"], row["field4"], row["field5"], row["field6"], row["field7"], row["field8"], row["field9"], row["field10"]);
     table.AddRow(result);
     result = String.Empty;
   }
}

}
catch (System.Data.SQLite.SQLiteException e)
{
  // словили
  result = String.Format("SQLite reader exception: {0}", e.Message);
}
finally
{
  // что бы не произошло закроем соединение
   using (var sqLiteConnection = new System.Data.SQLite.SQLiteConnection(connectionString))
  {
  sqLiteConnection.Close();
  }
}
// вернём результат
return result;
 
Последнее редактирование:
Если вы хотите отсортировать таблицу по какому нибудь столбцу, то ваш экспорт не должен включать столбец с PRIMARY KEY . Ну не п...ц а?
 
Пожалуйста расшарьте готовый шаблон для ZP, нужно просто чтение из SQlite запись в таблицу.
 
TWijO0CP.png
 
А почему у тебя переменная в проекте "sql", а в коде "SQL"? Переменные чувствительны к регистру вот он и пишет тебе исключение.
 
  • Оценить
Реакции: gluckbahr
Вы используете 64 битные библиотеки sqllite.
поэтому они работают в ZP и тестере, но не работают в PM, т.к. PM 32 битный.

Попробуйте использовать реализацию SQLite на чистом C# (она не зависит от битности системы и приложения)
https://code.google.com/p/csharp-sqlite/
 
  • Оценить
Реакции: CSS и Nick
как прикрутить базу данных sqlite или другую базу ?
 
Подскажите, какие рекомендации по созданию базы с db.mdb У меня после внесения данных 14 переменных

"Нераспознаваемый формат таблицы"
 
mdb - это разве не формат MS Access?
 
так собственно в чем проблема? можете пример шаблона выложить, как вы подключаете и какую ошибку получаете?
 
UPD: разобрался
 
Последнее редактирование:
ну так расскажите, как вы это сделали)) интересно!
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)