AndroidのSQLiteデータベースに新しいエントリを挿入しようとすると、構文エラーが原因で挿入が失敗します。形成されたクエリにはContentValuesインスタンスに追加された値は含まれていないようですが、その理由はわかりません。誰も私にエラーを指摘できますか?ここでContentValuesを使用してSQLite DBに挿入できません
はエラーメッセージです:
E/SQLiteLog: (1) near "TEXT": syntax error
E/SQLiteDatabase: Error inserting TIME_DATE TEXT=barbaz TRANSCRIPT TEXT=foobar
android.database.sqlite.SQLiteException: near "TEXT": syntax error (code 1): , while compiling: INSERT INTO approvals_t(TIME_DATE TEXT,TRANSCRIPT TEXT) VALUES (?,?)
そして、ここでは、私はそれをテストするために使用しているコードです:
public boolean insertData(String transStr, String timeStr) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cValues = new ContentValues();
cValues.put(TRANS_COL,"foobar");
cValues.put(TIME_COL,"barbaz");
// res is -1, the values couldn't be inserted
long res = db.insert(APVLS_TABLE_NAME,null,cValues);
if(res != -1)
return true;
else
return false;
}
(編集)コード
public class DBHelper extends SQLiteOpenHelper implements BaseColumns {
public static final String DB_NAME = "Transcripts.db";
public static final String APVLS_TABLE_NAME = "approvals_t";
public static final String ID_COL = BaseColumns._ID;
public static final String TRANS_COL = "TRANSCRIPT TEXT";
public static final String TIME_COL = "TIMEDATE TEXT";
public DBHelper(Context context) {
super(context, DB_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// Create a sql command that builds a table
String SQL_CREATE_APVLS_TABLE = "CREATE TABLE " + APVLS_TABLE_NAME + " ("
+ ID_COL + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ TRANS_COL + ", "
+ TIME_COL + ");";
// Execute sql statement
db.execSQL(SQL_CREATE_APVLS_TABLE);
}
の残りの部分を
create tableメソッドと変数の宣言を投稿できますか? – KoalaKoalified
@KoalaKoalified Np、done。 –
@VictorBrunell問題は、挿入時に定数TRANS_COLとTIME_COLを使用しているためです。これらの定数はテーブルのフィールドのTYPEを持っていますが、挿入には名前とタイプではなくフィールドの名前のみを入れるべきです。 – Jonas452