2014-10-20 32 views
0

我已經多次瀏覽buckys教程,但仍無法找到問題。我從錯誤信息中截取了一張截圖,但無法在此處發佈。有人可以幫助我,因爲我已經連續幾天陷入這個問題。SQLite Android錯誤代碼1創建表時

的錯誤信息是:

android.database.sqlite.SQLiteException near "CREATE TABLE peopleTable ":syntax error (code1):, while compiling: CREATE TABLE peopleTable (_id INTEGER PRIMARY KEY AUTOINCREMENT, persons_name TEXT NOT NULL persons_hotness TEXT NOT NULL);

下面是HotOrNot類的代碼:

package com.peltho.momskoll; 

    import android.content.ContentValues; 
    import android.content.Context; 
    import android.database.Cursor; 
    import android.database.SQLException; 
    import android.database.sqlite.SQLiteDatabase; 
    import android.database.sqlite.SQLiteDatabase.CursorFactory; 
    import android.database.sqlite.SQLiteOpenHelper; 

    public class HotOrNot { 

    public static final String KEY_ROWID = "_id"; 
    public static final String KEY_NAME = "persons_name"; 
    public static final String KEY_HOTNESS = "persons_hotness"; 

    private static final String DATABASE_NAME = "HotOrNotdb"; 
    private static final String DATABASE_TABLE = "peopleTable"; 
    private static final int DATABASE_VERSION = 1; 

    private DbHelper ourHelper; 
    private final Context ourContext; 
    private SQLiteDatabase ourDatabase; 

    private static class DbHelper extends SQLiteOpenHelper { 

    public DbHelper(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
    // denna klasss anv nds endast f rsta g ngen databasen tas i 
    // anv ndning 
    db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID 
    + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_NAME 
    + " TEXT NOT NULL, " + KEY_HOTNESS + " TEXT NOT NULL);"); 

    } 

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

    } 

    public HotOrNot(Context c) { 
    ourContext = c; 

    } 

    public HotOrNot open() throws SQLException { 
    ourHelper = new DbHelper(ourContext); 
    ourDatabase = ourHelper.getWritableDatabase(); 
    return this; 
    } 

    public void close() { 
    ourHelper.close(); 
    } 

    public long createEntry(String name, String hotness) { 
    // TODO Auto-generated method stub 
    ContentValues cv = new ContentValues(); 
    cv.put(KEY_NAME, name); 
    cv.put(KEY_HOTNESS, hotness); 
    // cv.put(KEY_VAT, vat); 
    // cv.put(KEY_DATE, date); 
    return ourDatabase.insert(DATABASE_TABLE, null, cv); 

    } 

    public String getData() { 
    // TODO Auto-generated method stub 

    String[] columns = new String[] { KEY_ROWID, KEY_NAME, KEY_HOTNESS }; 
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, 
    null, null); 

    String result = ""; 
    int iRow = c.getColumnIndex(KEY_ROWID); 
    int iName = c.getColumnIndex(KEY_NAME); 
    int iHotness = c.getColumnIndex(KEY_HOTNESS); 

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 
    result = result + c.getString(iRow) + " " + c.getString(iName) 
    + " " + c.getString(iHotness) + "\n"; 
    } 

    return result; 
    } 
    } 

我在SQLiteExempel代碼

package com.peltho.momskoll; 

import android.app.Activity; 
import android.app.Dialog; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class SQLiteExample extends Activity implements OnClickListener { 

Button sqlUpdate, sqlView; 
EditText sqlName, sqlHotness; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
// TODO Auto-generated method stub 
super.onCreate(savedInstanceState); 
setContentView(R.layout.sqliteexample); 
sqlUpdate = (Button) findViewById(R.id.bSQLUpdate); 
sqlView = (Button) findViewById(R.id.bSQLOpenView); 
sqlName = (EditText) findViewById(R.id.etSQLName); 
sqlHotness = (EditText) findViewById(R.id.etSQLHotness); 
// sqlVat = (EditText) findViewById(R.id.etSQLVAT); 
// sqlDate = (EditText) findViewById(R.id.etSQLDate); 
sqlView.setOnClickListener(this); 
sqlUpdate.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) { 
// TODO Auto-generated method stub 
switch (v.getId()) { 
case R.id.bSQLUpdate: 

boolean didItWork = true; 
try { 
String name = sqlName.getText().toString(); 
String hotness = sqlHotness.getText().toString(); 
// String va = sqlVat.getText().toString(); 
// String date = sqlDate.getText().toString(); 
// sum = Double.parseDouble(su); 
// vat = Double.parseDouble(va); 

HotOrNot entry = new HotOrNot(SQLiteExample.this); 
entry.open(); 
entry.createEntry(name, hotness); 
entry.close(); 
} catch (Exception e) { 

//It gives me this error message 
didItWork = false; 
String error = e.toString(); 
Dialog d = new Dialog(this); 
d.setTitle("NOO"); 
TextView tv = new TextView(this); 
tv.setText(error); 
d.setContentView(tv); 
d.show(); 

} finally { 

//It is supposed to do thisif it works 
if (didItWork) { 
Dialog d = new Dialog(this); 
d.setTitle("Jeeep"); 
TextView tv = new TextView(this); 
tv.setText("Lyckades"); 
d.setContentView(tv); 
d.show(); 
} 
} 

break; 
case R.id.bSQLOpenView: 
Intent i = new Intent("com.peltho.momskoll.SQLVIEW"); 
startActivity(i); 
break; 
} 
} 

} 
+0

SQLiteException的其餘部分是什麼意思? – 2014-10-20 15:34:16

+0

事實上,除了在Eclipse日誌中它說(1)在「CREATE TABLE people table」附近之外,其他方面沒有其他說明:語法錯誤 – 2014-10-20 15:45:31

+0

我明白了。這是空間。有趣,因爲我認爲格式化所有東西都會修復它,但我必須手動完成。當我寫錯誤信息時,忘記了逗號,它不在代碼中。 – 2014-10-20 15:52:24

回答

0

android.database.sqlite.SQLiteException near "CREATE TABLE peopleTable ":syntax error (code1):, while compiling: CREATE TABLE peopleTable (_id INTEGER PRIMARY KEY AUTOINCREMENT, persons_name TEXT NOT NULL persons_hotness TEXT NOT NULL);

near "CREATE TABLE peopleTable "表明它是閱讀作爲一個令牌所以空間不是常規的空間字符,而是例如不是標記分隔符的空格字符。用普通空格字符替換它們。

還有另一個語法錯誤:在persons_hotness之前丟失了,,但稍後您會收到關於它的錯誤。

0

我忘記輸入逗號,當我寫錯誤信息,它不是在代碼中。

問題出在空間裏。我認爲按Ctrl F已經修復了,但我必須手動檢查所有空格,然後才能正常工作。

+0

數據庫創建查詢是一個字符串文字。 Eclipse不會爲你修改你的字符串,那不會是你想要的。 – njzk2 2014-10-20 16:14:16

相關問題