16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
1
.NET 3.x

SQLite Проверка на выполнение запроса

02.08.2016, 01:48. Показов 4608. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
SQLite Проверка на выполнение запроса

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 //создание таблицы запрос таблицы command_SQL
        public int Sqlite_Create_Table(string command_SQL,SQLiteConnection sqliteconn)
        {
            int flagcreat = 0;
            try
            {
                //подключаемся
                SQLiteCommand command = new SQLiteCommand(sqliteconn);
                //передача запроса
                command.CommandText = command_SQL;
                //выполнение запроса
                command.CommandType = CommandType.Text;
                //получение ошибок
                flagcreat = command.ExecuteNonQuery();
                
            }
            catch 
            {
 
                flagcreat = 0;
            }
 
            return flagcreat;
        }
C#
1
2
3
4
5
6
SQLiteConnection sqliteconn;
string query="create table highscores (name varchar(20), score int)";
 
int error=Sqlite_Create_Table(query, sqliteconn);
 
MessageBox.Show(error.ToString());
возвращает 0
хотя все правильно , должно вернуть 1

Ну и как проверить на правильность запроса
это ExecuteScalar()
или что то другое ?
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.08.2016, 01:48
Ответы с готовыми решениями:

Записать результат запроса к БД SQLite в массив
Здравствуйте! Я разрабатываю приложение на Windows 8. К сожалению, очень мало документации в...

SqLite в Windows Phone 7: вывести результаты запроса на экран
Не могу разобраться в SqLite Нужен пример как создать Бд, таблицу и внести туда данниє + нужно...

Проверка записи в таблице sqlite
У меня есть функция, которая делает проверка на наличие записи в таблице. Если записи нет, то...

SQLite: проверка таблицы в существующей БД
как можно проверить есть ли в БД таблица с определенным именем, или получит список имеющихся таблиц

9
Администратор
Эксперт .NET
16994 / 13352 / 5211
Регистрация: 17.03.2014
Сообщений: 27,303
Записей в блоге: 1
02.08.2016, 02:27 2
GENDALF_ISTARI, метод ExecuteNonQuery возвращает количество строк в таблице которые были затронуты запросом. В приведенном коде нет работы со строками - есть только создание таблицы. Признаком успешного выполнения такого запроса является отсутствие исключения.

P.S. Ловить исключения блоком catch без сохранения информации об исключении плохая практика. В данном случае лучше вообще убрать try/catch.
1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
02.08.2016, 12:00  [ТС] 3
ну если уберу
вернет же 0 , а не 1
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//создание таблицы запрос таблицы command_SQL
        public int Sqlite_Create_Table(string command_SQL,SQLiteConnection sqliteconn)
        {
            int flagcreat = 0;
                //подключаемся
                SQLiteCommand command = new SQLiteCommand(sqliteconn);
                //передача запроса
                command.CommandText = command_SQL;
                //выполнение запроса
                command.CommandType = CommandType.Text;
                //получение ошибок
                flagcreat = command.ExecuteNonQuery();
                           
 
            return flagcreat;
        }

C#
1
2
3
4
5
6
SQLiteConnection sqliteconn;
string query="create table highscores (name varchar(20), score int)";
 
int error=Sqlite_Create_Table(query, sqliteconn);
 
MessageBox.Show(error.ToString());
0
Администратор
Эксперт .NET
16994 / 13352 / 5211
Регистрация: 17.03.2014
Сообщений: 27,303
Записей в блоге: 1
02.08.2016, 12:08 4
GENDALF_ISTARI, метод и так всегда будет возвращать 0 - с try/catch или без него потому что для запроса CREATE TABLE ... метод ExecuteNonQuery возвращает 0. Он вернет осмысленное число, только для INSERT/UPDATE/DELETE запросов. То есть возвращаемое значение никак не характирует успех или неудачу запроса. Если с запросом что-то не так, то будет сгенерировано исключение. Соответственно метод нужно переписать как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public bool Sqlite_Create_Table(string command_SQL, SQLiteConnection sqliteconn)
{
    try
    {
        SQLiteCommand command = new SQLiteCommand(command_SQL, sqliteconn);
        command.ExecuteNonQuery();
        return true;
    }
    catch
    {
        return false;
    }
}
1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
03.08.2016, 20:05  [ТС] 5
command.ExecuteNonQuery();
так нафик он вообще сдался ?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public bool Sqlite_Create_Table(string command_SQL, SQLiteConnection sqliteconn)
{
    try
    {
        SQLiteCommand command = new SQLiteCommand(command_SQL, sqliteconn);
        //command.ExecuteNonQuery(); //пока бесполезный метод 
        return true;
    }
    catch
    {
        return false;
    }
}
0
Администратор
Эксперт .NET
16994 / 13352 / 5211
Регистрация: 17.03.2014
Сообщений: 27,303
Записей в блоге: 1
04.08.2016, 01:18 6
GENDALF_ISTARI, он выполняет команду.
1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
04.08.2016, 14:19  [ТС] 7
он что сохраняет исключение
command.ExecuteNonQuery(); //в command пишет
чтоб потом реагировал
catch
{

}
0
Администратор
Эксперт .NET
16994 / 13352 / 5211
Регистрация: 17.03.2014
Сообщений: 27,303
Записей в блоге: 1
04.08.2016, 14:23 8
GENDALF_ISTARI, он не сохраняет исключение, а генерирует его. Наличие исключения говорит об ошибке, отсутствие - об успехе. Поэтому после ExecuteNonQuery написано return true; - эта строка будет выполнена только если не было исключения. Возьми книгу по C# и изучи главу посвященную обработке исключений.
1
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,793
04.08.2016, 14:25 9
Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
это ExecuteScalar()
вернет значение первого поля первой строки выборки (со всеми вытекающими, ибо выборка может быть и пустая)

Не по теме:


а вообще, пора бы уже и почитать чего, а не постить "не очень красивый код"™ в надежде, что его весь просмотрят и напишут новый

1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
04.08.2016, 17:03  [ТС] 10
Понял
0
04.08.2016, 17:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2016, 17:03
Помогаю со студенческими работами здесь

Выполнение SQL запроса
Подключил БД к проекту C# через стандартный источник данных, далее подключил компоненты...

Выполнение запроса к DataTable
Выполняю запрос к базе и получаю таблицу "obor_d_vse" DataTable obor_d_vse =...

Выполнение запроса с курсором
Помогите пожалуйста, в c# новичек, сделал подключение к БД SQL и выполняю такой запрос: ...

Выполнение запроса в форме
Добрый день! уважаемые форумчане такая проблема. пытаюсь вывести результат запроса в текст бокс,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru