Sql excecute scalar возвращает null, когда не отлаживается
привет
Я кодирую мигратор баз данных и выполняю следующие функции.
Второй вариант, если таблица базы данных была создана в первой функции, всегда возвращает null, а затем завершает работу при вызове функции trim. Дело в том, что если я помещаю точку останова в скалярную функцию execute, она работает нормально и возвращает значение db_version, но если я помещаю точку останова немного ниже, то значение версии равно нулю
Есть идеи?
private static void CreateVersionTable() { if (!DatabaseManager.TableExists("poscuba_info")) { string sqlTable = @"CREATE TABLE poscuba_info( db_version CHAR(10));"; string sqlVersion = @"INSERT INTO poscuba_info (db_version) VALUES ('1.02') "; try { DatabaseManager.executeSQL(sqlTable); DatabaseManager.executeSQL(sqlVersion); dataBaseVersion = "1.02"; } catch (Exception e) { MigrationError = e.Message; } } } public static string GetDBVersion() { string version = ""; try { version = (string)DatabaseManager.executeScalar("Select db_version from poscuba_info"); if (version == "") { MigrationError = "Version not found"; } } catch (Exception e) { MigrationError = e.Message; } dataBaseVersion = version.Trim(); return dataBaseVersion; }
Что я уже пробовал:
Я пробовал отлаживать и это работает когда отлаживается шаг за шагом
phil.o
Было бы лучше проверить if (string.IsNullOrEmpty(version))
.
Можем ли мы увидеть определение executeScalar
способ получения DatabaseManager
класс?
Vasily Tserekh
статический публичный инт функции executesql(строка SQL-запрос)
{
OleDbConnection connection = новый OleDbConnection(connectionString);
соединение.Открыть();
Команда oledbcommand объект = новый объект oledbcommand(SQL-запрос на подключение);
команда возврата.Метод executenonquery();
}
статический публичный объект executeScalar(string sqlQuery)
{
OleDbConnection connection = новый OleDbConnection(connectionString);
соединение.Открыть();
Команда oledbcommand объект = новый объект oledbcommand(SQL-запрос на подключение);
команда возврата.Executescalar так();
}