java - 编译时: Creation table error

标签 java android sql

编译时出现此错误:

android.database.sqlite.SQLiteException: near "TABLEnewtable": syntax error (code 1): , while compiling: CREATE TABLEnewtable{id INTEGER PRIMERY KEY, editname TEXT, edittel TEXT, editskype TEXT, editaddress TEXT }.

public class DataManipulator {
    private static final String DATABASE_NAME = "mydatabase.db";
    private static final int DATABASE_VERSION = 1;
    static final String TABLE_NAME = "newtable";
    private static Context context;
    static SQLiteDatabase db;
    private SQLiteStatement insertStmt;
    private static final String INSERT = "insert into" +TABLE_NAME+ "(editname, edittel, editskype, 
    editaddress) values(?,?,?,?)";
    public DataManipulator(Context context)
    {
        DataManipulator.context = context; 
        OpenHelper openHelper = new OpenHelper(DataManipulator.context);
        DataManipulator.db = openHelper.getReadableDatabase();
        this.insertStmt = DataManipulator.db.compileStatement(INSERT);
    }

    public long insert(String editname, String edittel, String editskype, String editaddress)
    {
        this.insertStmt.bindString(1, editname);
        this.insertStmt.bindString(2, edittel);
        this.insertStmt.bindString(3, editskype);
        this.insertStmt.bindString(4, editaddress);
        return this.insertStmt.executeInsert();
    }

    public void deleteAll()
    {
        db.delete(TABLE_NAME, null, null);
    }

    public List<String[]> selectAll()
    {
        List<String[]> list = new ArrayList<String[]>();
        Cursor cursor = db.query(TABLE_NAME, new String[]{"id","editname", "edittel", "editskype", 
        "editaddress"},null, null, null, null, "name asc");
        int x=0;
        if(cursor.moveToFirst())
        {
            do {
                String[] bb= new String[] { 
            cursor.getString(0),cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4)};
                list.add(bb);
                x=x+1;
            }
            while(cursor.moveToNext());
        }
        if(cursor != null && !cursor.isClosed())
        {
            cursor.close();
        }
        cursor.close();
        return list;
    }

    public void delete(int rowId)
    {
        db.delete(TABLE_NAME, null, null);
    }

    private static class OpenHelper extends SQLiteOpenHelper
    {
        OpenHelper(Context context)
        {
            super(context,DATABASE_NAME,null,DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            db.execSQL("CREATE TABLE" +TABLE_NAME+ "{id INTEGER PRIMERY KEY, editname TEXT, edittel TEXT, editskype TEXT, editaddress TEXT }");

        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
            db.execSQL("DROP TABLE IF EXISTS"+ TABLE_NAME);
            onCreate(db);

        }
    }
}

最佳答案

你有很多基本的 SQL 语法问题。请考虑首先学习一些基本的 SQL 和堆栈跟踪阅读。

  1. 在 SQL 关键字(例如 TABLE)和标识符(例如 newtable)之间添加空格。

    例如,更改

    "CREATE TABLE" +TABLE_NAME+
    

     "CREATE TABLE " +TABLE_NAME+
    

     "insert into" +TABLE_NAME+
    

     "insert into " +TABLE_NAME+
    
  2. CREATE TABLE 中的括号应该是 ( ) 而不是 { }

  3. PRIMERY 中的拼写错误,应为 PRIMARY

可能还有更多;这些只是在查看 SQL 的前 10 秒内发现的问题。

关于java - 编译时: Creation table error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25845944/

相关文章:

android - WakeLock 未锁定 GCM_LIB

php - Haversine 公式 SQL 查询中记录的分组和计数

mysql - 满足条件时对行进行分组

java - 如何在 Hashmap<Hashmap<ArrayList>> 中存储位置索引和文档 ID

java - android后台服务中的位置监听器

android - 如何将 2 个编辑文本作为 textwatch

java - 我想在应用程序运行时请求权限 android Marshmallow ..!

java - 访问扩展类方法

java - ResultSet:减少表被读锁定的时间量

mysql - 使用连接和嵌套查询计算数量