我首先嚐試使用SQLite,I`ve語法錯誤的工作,但我無法找到他5-6小時語法錯誤,找不到他
從MainActivity.java代碼,在這個類我稱之爲數據庫:從DatabaseHelper.java
package ua.bellkross.notepadjava;
import android.content.ContentValues;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
EditText editText;
DatabaseHelper databaseHelper;
SQLiteDatabase db;
Cursor userCursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
databaseHelper = new DatabaseHelper(getApplicationContext());
}
@Override
protected void onResume() {
super.onResume();
db = databaseHelper.getWritableDatabase();
userCursor = db.rawQuery("select * from " + DatabaseHelper.TABLE, null);
editText.setText(userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_NAME)));
}
}
代碼,這段代碼我有語法錯誤,在methot的onCreate:
package ua.bellkross.notepadjava;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "userstore.db"; // название бд
private static final int SCHEMA = 1; // версия базы данных
static final String TABLE = "table"; // название таблицы в бд
// названия столбцов
public static final String COLUMN_ID = "_id";
public static final String COLUMN_NAME = "name";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, SCHEMA);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE users (" + COLUMN_ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_NAME + " TEXT);");
// добавление начальных данных
db.execSQL("INSERT INTO "+ TABLE +"(" + COLUMN_NAME + ") VALUES ('Text');");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE);
onCreate(db);
}
}
這消息從logcat的:
引起:android.database.sqlite.SQLiteException:在「table」附近: 語法錯誤(代碼1):在編譯時:INSERT INTO表(名稱) VALUES('Text'); 在 android.database.sqlite.SQLiteConnection.nativePrepareStatement(母語 方法) 在 android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 在 android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection的.java:500) 在 android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 在android.database.sqlite.SQLiteProgram(SQLiteProgram.java:58) 在 android.database.sqlite。 SQLiteStatement。(SQLiteStatement.java:31) 在 android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1677) 在 android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1608) 在 ua.bellkross.notepadjava.DatabaseHelper.onCreate( DatabaseHelper.java:25) 在 android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:251) 在 android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163) 在 ua.bellkross .notepadjava.MainActivity.onResume(MainActivity.java:33) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1269) 在android.app.Activity.performResume(Activity.java:6766) 在 android.app.ActivityThread.performResumeActivity(ActivityThread.java:3377) 在 android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3440) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2713) 在android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java .lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit 。的java:756)07-26 10 :03:09.757 1375年至1382年/ ua.bellkross.notepadjava W /藝術:掛起所有 線程了:8.571ms
你有一個名爲「table」的表嗎?我不確定這是個好主意。 – Eran
表是MySQL中的[保留字](https://dev.mysql.com/doc/refman/5.7/en/keywords.html)。它必須反向使用,以及稍後可能使用的任何地方(例如,使用其他查詢),所以最好使用不同的名稱以避免出現錯誤所示的衝突。 –