GVKun编程网logo

rsqlite_send_query(conn @ ptr,语句)中的错误:附近'(':语法错误(select附近有语法错误,应为id)

14

在本文中,我们将详细介绍rsqlite_send_query的各个方面,并为您提供关于conn@ptr,语句中的错误:附近'的相关解答,同时,我们也将为您带来关于AndroidSQLiteExcept

在本文中,我们将详细介绍rsqlite_send_query的各个方面,并为您提供关于conn @ ptr,语句中的错误:附近'的相关解答,同时,我们也将为您带来关于Android SQLiteException:靠近“,”:语法错误:,在编译INSERT时、android – .SQLiteException:near“,”:语法错误(代码1):,同时编译:、android-“创建表”附近的SQLite语法错误、android.database.sqlite.SQLiteException:near“SELECT”:语法错误(代码1):,同时编译:SELECT * FROM Table_Name的有用知识。

本文目录一览:

rsqlite_send_query(conn @ ptr,语句)中的错误:附近'(':语法错误(select附近有语法错误,应为id)

rsqlite_send_query(conn @ ptr,语句)中的错误:附近'(':语法错误(select附近有语法错误,应为id)

下面的代码行:

sqldf("UPDATE q1_sql_1 SET MONTH_YEAR = RIGHT(MONTH_YEAR, LEN(MONTH_YEAR) - 4)")

显示此错误:

Error in rsqlite_send_query(conn@ptr, statement) : near "(": syntax error

答案1

使用lengthrightstr。有关SQLite中可用的功能,请参见:

https://www.sqlite.org/lang_corefunc.html

对于RSQLite也可以使用的贡献函数:

https://github.com/ggrothendieck/sqldf#example-15-use-of-rsqliteextfuns-
library-functions

Android SQLiteException:靠近“,”:语法错误:,在编译INSERT时

Android SQLiteException:靠近“,”:语法错误:,在编译INSERT时

这个问题已经在这里有了答案:            >            Is it possible to insert multiple rows at a time in an SQLite database?                                    24个
我正在尝试将值插入表

public class DatabaseHandler extends sqliteOpenHelper {
    private final static String INSERT_INTO_COUNTRIES = "INSERT INTO " + TABLE_COUNTRIES
                + " VALUES";

    @Override
    public void onCreate(sqliteDatabase db) {
            final String countries = "('1','Andorra','93','flag_andorra','AND'),
        ('2','Austria','43','flag_flag_austria','AUT')";
        String query = INSERT_INTO_COUNTRIES + countries + ";";
        db.execsql(query);
    }

}

并得到以下错误:

android.database.sqlite.sqliteException: near ",": Syntax error: , while compiling: INSERT INTO cardBerry_countries VALUES('1','Andorra','93','flag_andorra','AND'),('2','Austria','43','flag_flag_austria','AUT');

在Android 4.0.4 HTC Sense 3.6上发生错误.
我在Android 4.2及更高版本上运行的多种设备上进行了测试,并且工作正常.

有人知道出什么问题吗?

解决方法:

在sqlite版本3.7.11中引入了多值语法

Sqlite version 3.7.11 is only in Android 4.1 and up.

将您的插入片段拆分为单独的插入片段,一次插入一行.

android – .SQLiteException:near“,”:语法错误(代码1):,同时编译:

android – .SQLiteException:near“,”:语法错误(代码1):,同时编译:

我错过了什么?带有“,”的东西,但我似乎在寻找错误的地方.这是我的代码:

private static final String DATABASE_CREATE =
        "CREATE TABLE if not exists " + sqlITE_TABLE + " (" +
                KEY_ROWID + " integer PRIMARY KEY autoincrement," +
                KEY_CURSUS + "," +
                KEY_ONDERDEEL + "," +
                KEY_GAME + "," +
                KEY_TIJD + "," +
                KEY_WEB + "," +
                KEY_CHECK + "," +
                " UNIQUE (" + KEY_ROWID +"));";

这是我得到的错误:

 Caused by: android.database.sqlite.sqliteException: near ",": Syntax error (code 1): , while compiling: CREATE TABLE if not exists Games_getset (_id integer PRIMARY KEY autoincrement,cursus,onderdeel,game,tijd,web,check, UNIQUE (_id));

解决方法:

check is a keyword in SQL以来重命名或引用检查栏.

例如:

private static final String DATABASE_CREATE =
    "CREATE TABLE if not exists " + sqlITE_TABLE + " (" +
            KEY_ROWID + " integer PRIMARY KEY autoincrement," +
            KEY_CURSUS + "," +
            KEY_ONDERDEEL + "," +
            KEY_GAME + "," +
            KEY_TIJD + "," +
            KEY_WEB + "," +
            + "`" + KEY_CHECK + "`," +
            " UNIQUE (" + KEY_ROWID +"));";

android-“创建表”附近的SQLite语法错误

android-“创建表”附近的SQLite语法错误

这是我的代码:

    String CREATE_DATABASE = "CREATE TABLE " + TABLE_NAME + "("  + 
            KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
            "title TEXT, "+
            "author TEXT, "+
            "state TEXT);";

    db.execsql(CREATE_DATABASE);

LogCat说:12-11 23:43:50.553:E / AndroidRuntime(3706):android.database.sqlite.sqliteException:在“ CREATETABLE”附近:语法错误(代码1):,编译时:CREATETABLE PapersTable(_id INTEGERPRIMARY KEYAUTOINCREMENT,标题TEXT,作者TEXT,状态TEXT);

解决方法:

发布后,CREATE TABLE语法就可以了.

我怀疑CREATE和TABLE之间有一个不间断的空格(ASCII 0xA0).将其替换为常规空格(ASCII 0x20).这将解释您发布的语法错误:解析器将CREATE TABLE视为单个未知令牌,而不是作为两个单独的已知令牌CREATE和TABLE.

绝对错误的是,您在传递给函数的参数sqliteDatabase db上调用db.close().您应该只关闭自己打开的数据库,并且以这种方式关闭它会导致异常,尽管这是一个不同的异常.

android.database.sqlite.SQLiteException:near“SELECT”:语法错误(代码1):,同时编译:SELECT * FROM Table_Name

android.database.sqlite.SQLiteException:near“SELECT”:语法错误(代码1):,同时编译:SELECT * FROM Table_Name

我得到 android.database.sqlite.sqliteException:接近“SELECT”:语法错误(代码1):,同时编译:SELECT * FROM Universities错误.

我有以下课程

用户类为

public class User {
    private int univ_id;

    private String univ_name,univ_abbr;

    public User(int univ_id,String univ_name,String univ_abbr) {

        this.univ_id = univ_id;
        this.univ_name = univ_name;
        this.univ_abbr = univ_abbr;
    }

    public User(String univ_name,String univ_abbr) {

        this.univ_name = univ_name;
        this.univ_abbr = univ_abbr;
    }

    public User() {
        // Todo Auto-generated constructor stub
    }

    public int getUniv_id() {
        return univ_id;
    }

    public void setUniv_id(int univ_id) {
        this.univ_id = univ_id;
    }

    public String getUniv_name() {
        return univ_name;
    }

    public void setUniv_name(String univ_name) {
        this.univ_name = univ_name;
    }

    public String getUniv_abbr() {
        return univ_abbr;
    }

    public void setUniv_abbr(String univ_abbr) {
        this.univ_abbr = univ_abbr;
    }
}

DBStorageFirst Class as

public class DBStorageFirst extends sqliteOpenHelper {

    public static final String DATABASE_NAME = "STUPIDSID_OFFLINE_DB";

    public static final String TABLE_NAME_UNIVERSITIES = "universities";


    public static final String COLUMN_UNIV_ID = "univ_id";
    public static final String COLUMN_UNIV_NAME = "univ_name";
    public static final String COLUMN_UNIV_ABBR = "univ_abbr";

    public DBStorageFirst(Context context) {
        super(context,DATABASE_NAME,null,1);
    }

    @Override
    public void onCreate(sqliteDatabase db) {
        // Todo Auto-generated method stub
        db.execsql("create table " + TABLE_NAME_UNIVERSITIES
                + "(" + COLUMN_UNIV_ID + " integer RIMARY KEY," + COLUMN_UNIV_NAME
                + " text," + COLUMN_UNIV_ABBR + " text )");
        Log.e("Success","Universities Table Created");

    }

    @Override
    public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) {
        // Todo Auto-generated method stub
        db.execsql("DROP TABLE IF EXISTS " + TABLE_NAME_UNIVERSITIES);

        onCreate(db);
    }

    public void addUniversities(int univ_id,String univ_abbr) {
         sqliteDatabase db = this.getWritableDatabase();
        String sql1 = "insert into " + DBStorageFirst.TABLE_NAME_UNIVERSITIES
                + " (" + DBStorageFirst.COLUMN_UNIV_ID + ","
                + DBStorageFirst.COLUMN_UNIV_NAME + ","
                + DBStorageFirst.COLUMN_UNIV_ABBR + ")" + " values(" + univ_id
                + ",''" + univ_name + " '',''" + univ_abbr + "'')";
        db.execsql(sql1);
        // database.execsql(sql2);
        Log.e("Success","Data inserted Successfully into Universities Table");
    }

    public List<User> getAllContacts() {
        List<User> contactList = new ArrayList<User>();

        String selectQuery = "SELECT * FROM "+TABLE_NAME_UNIVERSITIES;
        sqliteDatabase db1 = this.getWritableDatabase();
        Cursor cursor = db1.rawQuery(selectQuery,null);
        if (cursor.movetoFirst()) {
            do {
                User contact = new User();
                contact.setUniv_id(Integer.parseInt(cursor.getString(0)));
                contact.setUniv_name(cursor.getString(1));
                contact.setUniv_abbr(cursor.getString(2));
                contactList.add(contact);
            } while (cursor.movetoNext());
        }
        return contactList;
    }
}

和MainActivity一样

DBStorageFirst db = new DBStorageFirst(this);

// Inserting Contacts
Log.d("Insert: ","Inserting ..");
db.addUniversities(25,"ABC","UA");
db.addUniversities(26,"DEF","UB");
List<User> list = new ArrayList<User>();
list = db.getAllContacts();

for (User cn : list) {
    String log = "Id: " + cn.getUniv_id() + ",Name: "
            + cn.getUniv_name() + ",Abbr: " + cn.getUniv_abbr();
    // Writing Contacts to log
    Log.d("Name: ",log);
}

解决方法

看起来SELECT之后的空格不是普通空格(0x20),而是一些其他字符,例如非空格(0xa0).用常规空间替换它.

关于rsqlite_send_queryconn @ ptr,语句中的错误:附近'的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Android SQLiteException:靠近“,”:语法错误:,在编译INSERT时、android – .SQLiteException:near“,”:语法错误(代码1):,同时编译:、android-“创建表”附近的SQLite语法错误、android.database.sqlite.SQLiteException:near“SELECT”:语法错误(代码1):,同时编译:SELECT * FROM Table_Name的相关知识,请在本站寻找。

本文标签: