2016-06-19 52 views
-1

创建DbManger类来处理SQLite数据库操作,我尝试插入数据库中的值它给出一个错误SQLite的给我附近的“创建”的错误:语法错误(代码1)

E/SQLiteDatabase( 6729):android.database.sqlite.SQLiteException:near“CREATE”:syntax error(code 1):,while compiling:INSERT INTO CREATE TABLE relations(_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,email TEXT NOT NULL,age TEXT NOT NULL,位置TEXT NOT NULL);(电子邮件,姓名,年龄,位置)VALUES(,,,)

DbManager类

????
public class DBManager { 

    int rowsAffected; 

    // Database and version 
    private static final String DB_NAME = "familyHistory"; 
    private static final int DB_VERSION = 1; 

    private static final String TABLE_INFO = "familyTable"; 

    private static final String _ROWID = "_id"; 
    private static final String _NAME = "name"; 
    private static final String _EMAIL = "email"; 
    private static final String _AGE = "age"; 
    private static final String _LOCATIONs = "location"; 

    private static final String CREATE_PRO = "CREATE TABLE " + TABLE_INFO + "(" + 
      _ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      _NAME + " TEXT NOT NULL, " + 
      _EMAIL + " TEXT NOT NULL, " + 
      _AGE + " TEXT NOT NULL, " + 
      _LOCATIONs + " TEXT NOT NULL);"; 

    private final Context ourContext; 
    private static DBHelper ourDBHelper; 
    private SQLiteDatabase ourDatabase; 

    public DBManager(Context ctx) { 
     this.ourContext = ctx; 
     Log.i("db", "DBManager(Context ctx)"); 
    } 

    private static class DBHelper extends SQLiteOpenHelper { 

     public DBHelper(Context context) { 
      // SQLiteOpenHelper Constructor Creating database 
      super(context, DB_NAME, null, DB_VERSION); 
      Log.i("db", "DBHelper(Context context)"); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      db.execSQL(CREATE_PRO); 
      Log.e(">>>>>", CREATE_PRO); 
      // db.execSQL(CREATE_TRVLBOK); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVer, int newVer) { 
      Log.w("Nomad", "Upgrading database from version " + oldVer + " to " + newVer 
        + ", which will destroy all old data"); 
      db.execSQL("DROP TABLE IF EXISTS " + TABLE_INFO); 
      // db.execSQL("DROP TABLE IF EXISTS " + TABLE_TRAVELBOK); 
      onCreate(db); 
      Log.i("db", "onUpgrade)"); 
     } 

    } 

    public DBManager open() throws SQLException { 
     ourDBHelper = new DBHelper(ourContext); 
     ourDatabase = ourDBHelper.getWritableDatabase(); 
     Log.i("db", "open()"); 
     return this; 
    } 

    public void close() { 
     ourDBHelper.close(); 
     Log.i("db", "close()"); 
    } 



    public long insertFamRec(String UserName, String Email, String age, String location) { 
     ContentValues cv = new ContentValues(); 
     cv.put(_NAME, UserName); 
     cv.put(_EMAIL, Email); 
     cv.put(_AGE, age); 
     cv.put(_LOCATIONs, location); 
     Log.i("db", "insertLocRec"); 
     return ourDatabase.insert(CREATE_PRO, null, cv); 

    } 
} 

而且从插入类我添加了这行,但仍错误

DBManager db = new DBManager(NewRelation.this); 
    db.open(); 
    long i = db.insertFamRec("strfullName", "stremail", "strage", "strlocation"); 

    db.close(); 
    if (i > 0) { 
     ShowMessage.Message(NewRelation.this, "data is added"); 
    } else { 
     Toast.makeText(getApplicationContext(), "data is failed", Toast.LENGTH_SHORT).show(); 
    } 

如果有人给下来的问题,请提到它为什么评级。

回答

1

这个问题似乎是您拨打ourDatabase.insert的地方,您将查询字符串传递给表名的位置。你希望用这条线实现什么:return ourDatabase.insert(CREATE_PRO, null, cv);

行更改为:

return ourDatabase.insert(TABLE_INFO, null, cv); 

注意,而不是CREATE_PRO,我通过TABLE_INFO这是要插入到表的名称。 我希望这可以解决您的问题。请让我知道它是否有帮助。

+0

谢谢@ishmael我忘了!复制粘贴的缺点:P :) – Attaullah

+0

复制粘贴可能代价高昂!我很高兴能够提供帮助,如果您觉得有用,请回答投票。 – ishmaelMakitla

相关问题