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

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Благодарностей
30
Баллы
28
Здравствуйте, как подключить библиотеку Sqlite?
Пожалуйста, приведите пример реализации на простом примере.
А то работать через командную строку стало очень неудобно:
постоянно всплывающие окна уже бесят,
экспорт идет в ANSI,
длина текста командной строки ограничена и множество багов при многопоточном режиме.
Я хочу portable реализацию, на MSSQL неудобно.
 

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Благодарностей
30
Баллы
28
Дам на ПИВО 30$ кто первый напишет рабочею реализацию!
Пример SELECT * FROM
Пример INSERT c ecape
Пример Export to CSV со своими разделителями
Пример Import from CSV
 

shade

Client
Регистрация
19.11.2010
Сообщения
580
Благодарностей
346
Баллы
63
Дам на ПИВО 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

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Благодарностей
30
Баллы
28
У меня не работает. Ругается не удается загрузить некоторые сборки проекта.
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, но как ?

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

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

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
Ахахахах))) я знал! я знал что так оно все и обернется)))
Для того чтобы сделать обвязку между IZennoTable и внешней базой данных надо порядком погеммороиться, при чем настолько порядком, что лично для меня становится сомнительным использование зеннопостера как инструмента и уже проще сразу на шарпе делать...

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

Не думаю что у вас там в базе Big Data так что зенка должна справиться)))
 

myweb101

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

bigcajones

Client
Регистрация
09.02.2011
Сообщения
1 216
Благодарностей
683
Баллы
113

Вложения

  • Спасибо
Реакции: myweb101

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Благодарностей
30
Баллы
28

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Благодарностей
30
Баллы
28
Код shade работает!!! Проблема была в том, что у меня Win7 x64. и только непонятные задержки в PM при добавлении строки.
 
Последнее редактирование:

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Благодарностей
30
Баллы
28
Может кому интересно , я немного переделал шаблон
MYSQL теперь данные попадают в таблицу zenno
Шаблон приведенный выше, "по моей логике" работает не правильно. Может кто меня поправит? Шаблон работает правильно? У меня в тестах данные отдаются нормально.
 

Вложения

alekwuy

Client
Регистрация
06.04.2013
Сообщения
1 631
Благодарностей
461
Баллы
83

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Благодарностей
30
Баллы
28
Конечно:-)
 
  • Спасибо
Реакции: alekwuy

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Благодарностей
30
Баллы
28
Пытаюсь сделать по аналогии с 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;
 

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Благодарностей
30
Баллы
28
Доперло как:-) Это код для 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;
 
Последнее редактирование:

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Благодарностей
30
Баллы
28
Если вы хотите отсортировать таблицу по какому нибудь столбцу, то ваш экспорт не должен включать столбец с PRIMARY KEY . Ну не п...ц а?
 

gluckbahr

Client
Регистрация
05.04.2014
Сообщения
84
Благодарностей
25
Баллы
18
Пожалуйста расшарьте готовый шаблон для ZP, нужно просто чтение из SQlite запись в таблицу.
 

gluckbahr

Client
Регистрация
05.04.2014
Сообщения
84
Благодарностей
25
Баллы
18

shade

Client
Регистрация
19.11.2010
Сообщения
580
Благодарностей
346
Баллы
63
А почему у тебя переменная в проекте "sql", а в коде "SQL"? Переменные чувствительны к регистру вот он и пишет тебе исключение.
 
  • Спасибо
Реакции: gluckbahr

gluckbahr

Client
Регистрация
05.04.2014
Сообщения
84
Благодарностей
25
Баллы
18

darkdiver

Administrator
Команда форума
Регистрация
13.01.2009
Сообщения
2 285
Благодарностей
2 730
Баллы
113
Вы используете 64 битные библиотеки sqllite.
поэтому они работают в ZP и тестере, но не работают в PM, т.к. PM 32 битный.

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

Ztt7

Client
Регистрация
10.05.2014
Сообщения
146
Благодарностей
7
Баллы
18
как прикрутить базу данных sqlite или другую базу ?
 

Ztt7

Client
Регистрация
10.05.2014
Сообщения
146
Благодарностей
7
Баллы
18
Подскажите, какие рекомендации по созданию базы с db.mdb У меня после внесения данных 14 переменных

"Нераспознаваемый формат таблицы"
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 983
Благодарностей
817
Баллы
113
mdb - это разве не формат MS Access?
 

Ztt7

Client
Регистрация
10.05.2014
Сообщения
146
Благодарностей
7
Баллы
18

darkdiver

Administrator
Команда форума
Регистрация
13.01.2009
Сообщения
2 285
Благодарностей
2 730
Баллы
113
так собственно в чем проблема? можете пример шаблона выложить, как вы подключаете и какую ошибку получаете?
 

keytri

Client
Регистрация
28.08.2011
Сообщения
157
Благодарностей
10
Баллы
18
UPD: разобрался
 
Последнее редактирование:

Nick

Client
Регистрация
22.07.2014
Сообщения
1 983
Благодарностей
817
Баллы
113
ну так расскажите, как вы это сделали)) интересно!
 

keytri

Client
Регистрация
28.08.2011
Сообщения
157
Благодарностей
10
Баллы
18

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