2012-03-12 191 views
1

我寫了數據庫類&試圖插入數據庫中的值,但我得到像這樣的異常android.database.sqlite.SQLiteException:接近「15」:語法錯誤:,編譯時:插入時出現數據庫錯誤

insert into tbl_setmessage (Title,Message,DateFrom,StartTime,ExpiryDate,ExpiryTime)  values 
('Swapnil','hii','12-3-2012 '15:53'14-3-2012 '15:54') 

是什麼問題

我DATABSE類是

public class DataBaseCreator { 
private static final String DATABASE_NAME = "SetMessage.db"; 
private static final int DATABASE_VERSION = 1; 
private Context context; 
private SQLiteDatabase db; 
private SQLiteStatement insertStmt; 

public DataBaseCreator(Context context) { 
    this.context = context; 
    OpenHelper openHelper = new OpenHelper(this.context); 
    this.db = openHelper.getWritableDatabase(); 
} 


public long insert(String TABLE_NAME, String TABLE_FIELDS, String TABLE_VALUES) { 
    String INSERT = "insert into " 
      + TABLE_NAME + "("+ TABLE_FIELDS +") values ("+TABLE_VALUES+")"; 
    this.insertStmt = this.db.compileStatement(INSERT); 
    return this.insertStmt.executeInsert(); 
} 
public void closeDb() { 
    this.db.close(); 
} 

private static class OpenHelper extends SQLiteOpenHelper { 

    OpenHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("CREATE TABLE Set_message (Tittle VARCHAR(30) NOT NULL," + 
    "Message VARCHAR(30) NOT NULL,"+ 
     "Date_from DATETIME NOT NULL,"+ 
     "Start_Time DATETIME NOT NULL,"+ 
     "Expiry_Date DATETIME NOT NULL,"+ 
     "Expiry_Time DATETIME NOT NULL)"); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP DATABASE IF EXISTS " + DATABASE_NAME); 
     onCreate(db); 
    } 

} 

public void open() { 
    // TODO Auto-generated method stub 

} 

}

和主類是

btn_SetMessage.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      baseCreator.insert("tbl_setmessage ","Title,Message,DateFrom,StartTime,ExpiryDate,ExpiryTime","'"+tv1.getText()+"','" 
        +tv2.getText()+"','"+StartDate.getText()+"'"+StartTime.getText()+"'"+ExpiryDate.getText()+"'"+ExpiryTime.getText()+"'"); 
      Intent i=new Intent(SetMessage.this,SelectLocation.class); 
      startActivity(i); 
     } 
    }); 

回答

1

嘗試:

btn_SetMessage.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     baseCreator.insert("tbl_setmessage ","Title,Message,DateFrom,StartTime,ExpiryDate,ExpiryTime","'"+tv1.getText()+"','" 
       +tv2.getText()+"','"+StartDate.getText()+"','"+StartTime.getText()+"','"+ExpiryDate.getText()+"','"+ExpiryTime.getText()+"'"); 
     Intent i=new Intent(SetMessage.this,SelectLocation.class); 
     startActivity(i); 
    } 
}); 

你失去了一些 「 ''」

+0

我曾經嘗試這樣做,現在除了給這樣Android.database.sqlite.SQLiteException:沒有這樣的表:tbl_setmessage:,在編譯:插入tbl_setmessage – user1196969 2012-03-12 10:38:49

+0

因爲它是Set_message(你的SQL是「CREATE TABLE Set_message(Tittle VARCHAR(30)....」) – 2012-03-12 10:42:17

0

這是你的錯誤信息,說我拿了reformating的自由:

I have written the Database class & trying to insert the values in the database but i am getting Exception like this
android.database.sqlite.SQLiteException: near "15": syntax error: , while compiling: insert into tbl_setmessage (Title,Message,DateFrom,StartTime,ExpiryDate,ExpiryTime) values ('Swapnil','hii','12-3-2012 '15:53'14-3-2012 '15:54')

正如你在大膽的部分看到的,一些逗號丟失了。試試這個:

insert into tbl_setmessage (Title,Message,DateFrom,StartTime,ExpiryDate,ExpiryTime) values ('Swapnil','hii','12-3-2012', '15:53', '14-3-2012', '15:54') 

小心你的撇號(符號')。

另外,你爲什麼不使用Android SQLite APIs?他們非常方便。您還可以使用SQLiteQueryBuilder

0
//decleration 
    EventDataSQLHelper eventsData;// class where database is created 
    SQLiteDatabase dbx ; 
    SQLiteDatabase rdbx; 
    ContentValues values; 
//onCreate 
eventsData = new EventDataSQLHelper(NewWakeupProfile.this); 

     dbx = eventsData.getWritableDatabase();  
     rdbx = eventsData.getReadableDatabase(); 
     values=new ContentValues(); 
values.put("columnname1",value1); 
values.put("columnname1",value2); 
values.put("columnname1",value3); 
values.put("columnname1",value4); 
....... 
...... 
....... 


//insert query 
dbx.insert("tablename", null,values); 
相關問題