영어 단어를 클릭시에 새로운 창에서 단어뜻을 뿌리는 작업을 하고있는데요
아래소스중에 빨간부분
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class DB extends Activity{
ProductDBHelper mHelper;
private String textname[] = new String[100];
private ListView list;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//Toast.makeText(this, "success1", Toast.LENGTH_SHORT).show();
setContentView(R.layout.db);
Intent getIntent = getIntent();
String getWord = getIntent.getExtras().get("pagechange").toString();
Toast.makeText(this, getWord, Toast.LENGTH_SHORT).show();
Bundle extras = getIntent().getExtras();
if (extras != null) {
getWord = extras.getString("pagechange");
}
mHelper = new ProductDBHelper(this);
Cursor cursor;
SQLiteDatabase mDb = mHelper.getWritableDatabase();
/*cursor = mDb.rawQuery("SELECT * FROM EBook WHERE wordname = '?'",null);
startManagingCursor(cursor);
*/
cursor = mDb.rawQuery("SELECT * FROM EBook WHERE wordname = '?'",textname);
startManagingCursor(cursor);
SimpleCursorAdapter MyAdapter = new SimpleCursorAdapter(this,
R.layout.db,
cursor, new String[]{"_id","wordname","mean","wordclass"},
new int[]{R.id._id,R.id.wordname,R.id.mean,R.id.wordclass});
list = (ListView)findViewById(android.R.id.list);
list.setAdapter(MyAdapter);
}
}
class ProductDBHelper extends SQLiteOpenHelper{
public ProductDBHelper(Context context) {
super(context, "EngEBook.sqlite", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE EBook (_id INTEGER PRIMARY KEY NOT NULL," +
"wordname VARCHAR, mean TEXT, wordclass TEXT);");
db.execSQL("INSERT INTO EBook VALUES(1,'on','onon','ononon'");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS product");
onCreate(db);
}
}
빨간 부분을 제외하면 영어단어 클릭시에 새로운 창에서 토스트테스트하여 재대로된 영어단어를 인식시켜 주지만
저 SimpleCursorAdapter 부분만 들어가면 영어단어 클릭시 에러창이 뜹니다.
11-08 15:53:09.510: ERROR/Database(244): Failure 1 (near "'ononon'": syntax error) on 0x131748 when preparing 'INSERT INTO EBook VALUES(1,'on','onon','ononon''.
11-08 15:53:09.561: DEBUG/AndroidRuntime(244): Shutting down VM
11-08 15:53:09.570: WARN/dalvikvm(244): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
11-08 15:53:09.580: ERROR/AndroidRuntime(244): Uncaught handler: thread main exiting due to uncaught exception
11-08 15:53:09.640: ERROR/AndroidRuntime(244): java.lang.RuntimeException: Unable to start activity ComponentInfo{ac.kr.dankook/ac.kr.dankook.DB}: android.database.sqlite.SQLiteException: near "'ononon'": syntax error: INSERT INTO EBook VALUES(1,'on','onon','ononon'
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at android.os.Handler.dispatchMessage(Handler.java:99)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at android.os.Looper.loop(Looper.java:123)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at android.app.ActivityThread.main(ActivityThread.java:4363)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at java.lang.reflect.Method.invokeNative(Native Method)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at java.lang.reflect.Method.invoke(Method.java:521)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at dalvik.system.NativeStart.main(Native Method)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): Caused by: android.database.sqlite.SQLiteException: near "'ononon'": syntax error: INSERT INTO EBook VALUES(1,'on','onon','ononon'
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1610)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at ac.kr.dankook.ProductDBHelper.onCreate(DB.java:67)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:106)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at ac.kr.dankook.DB.onCreate(DB.java:37)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
11-08 15:53:09.640: ERROR/AndroidRuntime(244): ... 11 more
이렇게 로그창에서 오류를 표시해 줍니다.
어느부분을 수정해야하고 추가시켜야 하는지 막막해서 이렇게 글을 올려 봅니다.
syntax error: INSERT INTO EBook VALUES(1,'on','onon','ononon'
아마도 아래의 코드중에 해당 insert 구문이 있을것으로 판단되오니
Insert 구문에 오류가 없는지 확인을 하시는게 좋을 것 같습니다.
ac.kr.dankook.ProductDBHelper.onCreate(DB.java:67)
ac.kr.dankook.DB.onCreate(DB.java:37)




cursor = mDb.rawQuery("SELECT * FROM EBook WHERE wordname = '?'",textname);
startManagingCursor(cursor);
SimpleCursorAdapter MyAdapter = new SimpleCursorAdapter(this,
R.layout.db,
cursor, new String[]{"_id","wordname","mean","wordclass"},
new int[]{R.id._id,R.id.wordname,R.id.mean,R.id.wordclass});
list = (ListView)findViewById(android.R.id.list);
list.setAdapter(MyAdapter);