Главная | Комментарии | О проекте
Чтение RSS
Суперсайт
Главная Контакты Карта сайта Добавить в избранное
  • Кто OnLine

    Всего на сайте: 1
    Гостей: 0
    Пользователи: - отсутствуют
    Роботы: crawl Bot

    Опрос пользователей

    Для какого мода Вы пишите плагины?

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 24-04-2012, 13:02 Просмотров: 2245

    SQL_QueryError Функция получает текст ошибки запроса к базе данных

    Любая программа или скрипт требует отладки во время ее написания, не исключение и pawn, а тем более работа с базой данных. В модуле sqlx есть функция SQL_QueryError, которая получает текст ошибки в случае использования не верного запроса к базе данных.

    Инфо из sql.inc:
    /**
    * Gets information about a failed query error.
    * Returns the errorcode.
    */
    native SQL_QueryError(Handle:query, error[], maxlength);


    Синтаксис:
    SQL_QueryError(Handle:query, error[], maxlength)

    • Handle:query - Идентификатор выполненного запроса
    • error[] - Массив для записи ошибки
    • maxlength - Максимальная длина


    Тип функции:
    Native

    Пример:
    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>
    #include <sqlx>

    #define PLUGIN "[SQLx.inc] SQL_QueryError"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    new Handle:SQL_Tuple
    new Handle:SQL_Connection

    public plugin_init() {
        
        
        register_plugin(PLUGIN, VERSION, AUTHOR)
        register_cvar("SQLx_host","127.0.0.1")
        register_cvar("SQLx_db","amxxmodx")
        register_cvar("SQLx_user","admin")
        register_cvar("SQLx_password","pass")
        
        register_concmd("select_sql","sqlx_select")
    }
    public plugin_cfg(){
        new host[33],dbase[33],user[33],pass[33]
        get_cvar_string("SQLx_host",host,30)
        get_cvar_string("SQLx_db",dbase,30)
        get_cvar_string("SQLx_user",user,30)
        get_cvar_string("SQLx_password",pass,30)
        SQL_Tuple = SQL_MakeDbTuple(host,user,pass,dbase)
        new err, error[256]
        SQL_Connection = SQL_Connect(SQL_Tuple, err, error, charsmax(error))
        
        if(SQL_Connection != Empty_Handle)
        {
            log_amx("[SQLx connect ok]")
            }else{
            log_amx("[SQLX sql error] %s ",error)
            pause("a")
        }
        
    }
    public sqlx_select(id){
        
        new Handle:query = SQL_PrepareQuery(SQL_Connection,"SELECT * FROM `table`")
        SQL_Execute (query)

        //Массив для текста ошибки    
        new error[128]
        //Получение ошибки
        SQL_QueryError(query, error, charsmax(error))
        //Вывод в консоль сервера текст ошибки    
        server_print("[SQL error]:%s",error)
        
    }
    public plugin_end(){
        
        SQL_FreeHandle(SQL_Tuple)
        SQL_FreeHandle(SQL_Connection)
        
    }


    Описание:
    Из всего кода нас интересует только получение кода ошибки,выделю его отдельно:
        //Массив для текста ошибки    
        new error[128]
        //Получение ошибки
        SQL_QueryError(query, error, charsmax(error))
        //Вывод в консоль сервера текст ошибки    
        server_print("[SQL error]:%s",error)

    Результат работы:
    [SQL error]:Table 'amxxmodx.table' doesn't exist


    В базе данных с которой было установлено соединения нет таблицы с именем table.
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Наверх

Реклама