2015-05-11 2 views
0

Я пытаюсь использовать GNOME JavsScript tutorial, что кажется not to work in its original version.Ожидаемый тип utf8 для аргумента 'sql', но получил тип 'object'

var gdaStrConn = Gda.Connection.open_from_string("SQLite", "DB_DIR=" + GLib.get_home_dir() + ";DB_NAME=gnome_demo", null, 0); 
    print('Connected'); 
    gdaStrConn.execute_non_select_command (this.connection, 'create table demo (id integer, name varchar(100))'); 

документация для функции execute_non_select_command, говорит:

gint    gda_connection_execute_non_select_command 
                 (GdaConnection *cnc, 
                 const gchar *sql, 
                 GError **error); 
This is a convenience function to execute a SQL command over the opened connection. For the returned value, see gda_connection_statement_execute_non_select()'s documentation. 

cnc : an opened connection 
sql : a query statement that must not begin with "SELECT" 
error : a place to store errors, or NULL 
Returns : the number of rows affected or -1, or -2 

Теперь я получаю следующее сообщение об ошибке .:

(gjs:25295): Gjs-WARNING **: JS ERROR: Error: Expected type utf8 for Argument 'sql' but got type 'object' 

Почему я получаю эту ошибку, причину sql паров являются строка: 'create table demo (id integer, name varchar(100))'?

Что не так с этим звонком?

ответ

1

В строке 3 опустить первый аргумент в функции, так что строка будет выглядеть следующим образом:

gdaStrConn.execute_non_select_command ('create table demo (id integer, name varchar(100))'); 

Я не знаю, почему это работает, только обучение GJS себя.

+1

Причина этого в том, что документация предназначена для версии библиотеки C. Первый аргумент, указатель на 'GdaConnection', представлен в javascript с объектом, на который вызывается метод (например,' gdaStrConnection.execute_non_select_command (...) 'примерно эквивалентен C' gda_connection_execute_non_select_command (gdaStrConnection, .. .) ') –