2014-12-03 4 views
-1

간단한 Android 데이터베이스를 만들려고 애썼지 만 응용 프로그램을 실행하려고하면 "불행히도 appName이 멈 춥니 다"라고 말한 다음 LogCat을 확인하고 오류가 발생했습니다.불행히도 응용 프로그램이 중지되었습니다

여기
12-03 12:23:37.659: E/SQLiteLog(1113): (1) near "tablehobiku": syntax error 
12-03 12:23:37.689: E/AndroidRuntime(1113): FATAL EXCEPTION: main 
12-03 12:23:37.689: E/AndroidRuntime(1113): Process: com.db.satu, PID: 1113 
12-03 12:23:37.689: E/AndroidRuntime(1113): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.db.satu/com.db.satu.DatabaseAndroidSatu}: android.database.sqlite.SQLiteException: near "tablehobiku": syntax error (code 1): , while compiling: create tablehobiku (_id integer PRIMARY KEY autoincrement,nama text,hobi text) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.app.ActivityThread.access$800(ActivityThread.java:135) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.os.Handler.dispatchMessage(Handler.java:102) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.os.Looper.loop(Looper.java:136) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at java.lang.reflect.Method.invoke(Method.java:515) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at dalvik.system.NativeStart.main(Native Method) 
12-03 12:23:37.689: E/AndroidRuntime(1113): Caused by: android.database.sqlite.SQLiteException: near "tablehobiku": syntax error (code 1): , while compiling: create tablehobiku (_id integer PRIMARY KEY autoincrement,nama text,hobi text) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1672) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1603) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at com.db.satu.DatabaseManager$DatabaseOpenHelper.onCreate(DatabaseManager.java:45) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at com.db.satu.DatabaseManager.<init>(DatabaseManager.java:31) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at com.db.satu.DatabaseAndroidSatu.onCreate(DatabaseAndroidSatu.java:27) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.app.Activity.performCreate(Activity.java:5231) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
12-03 12:23:37.689: E/AndroidRuntime(1113):  ... 11 more 

가 내 클래스 이름 DatabaseAndroidSatu.java 파일 : 여기

package com.db.satu; 

    import java.util.ArrayList; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.TableLayout; 
    import android.widget.TableRow; 
    import android.widget.TextView; 
    import android.widget.Toast; 

    public class DatabaseAndroidSatu extends Activity { 
    DatabaseManager dm; 
    EditText nama, hobi; 
    Button addBtn; 
    TableLayout tabel4data;// tabel for data 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    dm = new DatabaseManager(this); 
    tabel4data = (TableLayout) findViewById(R.id.tabel_data); 
    nama = (EditText) findViewById(R.id.inNama); 
    hobi = (EditText) findViewById(R.id.inHobi); 
    addBtn = (Button) findViewById(R.id.btnAdd); 
    addBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    simpKamuta(); 
    } 
}); 
    updateTable(); 
    } 

    protected void simpKamuta() { 
    try { 
    dm.addRow(nama.getText().toString(),hobi.getText().toString()); 
    Toast.makeText(getBaseContext(), 
    nama.getText().toString() + ", berhasil disimpan", 
    Toast.LENGTH_SHORT).show(); 
    updateTable(); 
    kosongkanField(); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    Toast.makeText(getBaseContext(), "gagal simpan, " + 
     e.toString(),Toast.LENGTH_LONG).show(); 
    } 
    } 
    protected void kosongkanField(){ 
    nama.setText(""); 
    hobi.setText(""); 
    } 
    protected void updateTable() { 
    // TODO Auto-generated method stub 
    while (tabel4data.getChildCount() > 1) { 
    tabel4data.removeViewAt(1); 
    } 

    ArrayList<ArrayList<Object>> data = dm.ambilSemuaBaris();// 

    for (int posisi = 0; posisi < data.size(); posisi++) { 
    TableRow tabelBaris = new TableRow(this); 
    ArrayList<Object> baris = data.get(posisi); 

    TextView idTxt = new TextView(this); 
    idTxt.setText(baris.get(0).toString()); 
    tabelBaris.addView(idTxt); 

    TextView namaTxt = new TextView(this); 
    namaTxt.setText(baris.get(1).toString()); 
    tabelBaris.addView(namaTxt); 

    TextView hobiTxt = new TextView(this); 
    hobiTxt.setText(baris.get(2).toString()); 
    tabelBaris.addView(hobiTxt); 

    tabel4data.addView(tabelBaris); 
    } 
}} 

내가 "DatabaseManager.java"라는 만든 활동 클래스가 아닌 다른 클래스 여기 내 오류 로그입니다 :

: 여기
package com.db.satu; 

    import java.util.ArrayList; 

    import android.content.ContentValues; 
    import android.content.Context; 
    import android.database.Cursor; 
    import android.database.sqlite.SQLiteDatabase; 
    import android.database.sqlite.SQLiteOpenHelper; 
    import android.util.Log; 

    public class DatabaseManager { 

    private static final String ROW_ID = "_id"; 
    private static final String ROW_NAMA = "nama"; 
    private static final String ROW_HOBI = "hobi"; 

    private static final String NAMA_DB = "DatabaseAndroidSatu"; 
    private static final String NAMA_TABEL = "hobiku"; 
    private static final int DB_VERSION = 1; 

    private static final String CREATE_TABLE = "create table"+NAMA_TABEL+" ("+ROW_ID+" integer PRIMARY KEY autoincrement,"+ROW_NAMA+" text,"+ROW_HOBI+" text)"; 

    private final Context context; 
    private DatabaseOpenHelper dbHelper; 
    private SQLiteDatabase db; 

     public DatabaseManager(Context ctx) { 
     this.context = ctx; 
    dbHelper = new DatabaseOpenHelper(context); 
    db = dbHelper.getWritableDatabase(); 
    } 

     private static class DatabaseOpenHelper extends 
    SQLiteOpenHelper { 

     public DatabaseOpenHelper(Context context) { 
     super(context, NAMA_DB, null, DB_VERSION); 
    // TODO Auto-generated constructor stub 
    } 

     @Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     db.execSQL(CREATE_TABLE); 
    } 

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

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

    public void addRow(String nama, String hobi) { 
    ContentValues values = new ContentValues(); 
    values.put(ROW_NAMA, nama); 
    values.put(ROW_HOBI, hobi); 
    try { 
    db.insert(NAMA_TABEL, null, values); 
    } catch (Exception e) { 
    Log.e("DB ERROR", e.toString()); 
    e.printStackTrace(); 
    } 
    } 

    public ArrayList<ArrayList<Object>> ambilSemuaBaris() { 
    ArrayList<ArrayList<Object>> dataArray = new 
    ArrayList<ArrayList<Object>>(); 
    Cursor cur; 
    try { 
    cur = db.query(NAMA_TABEL, 
    new String[] { ROW_ID, ROW_NAMA, ROW_HOBI }, null, null, 
    null, null, null); 
    cur.moveToFirst(); 
    if (!cur.isAfterLast()) { 
    do { 
     ArrayList<Object> dataList = new ArrayList<Object>(); 
     dataList.add(cur.getLong(0)); 
     dataList.add(cur.getString(1)); 
     dataList.add(cur.getString(2)); 
     dataArray.add(dataList); 
     } while (cur.moveToNext()); 
     } 
      } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     Log.e("DEBE ERROR", e.toString()); 
     } 
     return dataArray; 
     } 
     } 

내 main.xml에 스크립트입니다 여기
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.db.satu.DatabaseAndroidSatu" > 

    <item 
     android:id="@+id/action_settings" 
     android:orderInCategory="100" 
     android:showAsAction="never" 
     android:title="@string/action_settings"/> 

</menu> 

내 strings.xml의이다 : 여기

117,699,153,210 프로젝트의/고해상도/메뉴/폴더 "내 프로젝트 이름"에있는 내 .xml 파일입니다

<?xml version="1.0" encoding="utf-8"?> 

<resources> 
    <string name="hello">Masukkan nama dan hobi</string> 
    <string name="app_name">Database Android #1</string> 
    <string name="btnAddtxt">Add</string> 
    <string name="namaLabel">Nama</string> 
    <string name="hobiLabel">hobi</string> 
    <string name="nomorLabel">No.</string> 
    <string name="action_settings">Settings</string> 
</resources> 
+1

질문하기 전에 오류를 읽으십시오. 제발. (오타로 폐업했습니다) – njzk2

+0

정말 미안 해요, 흡수되었습니다. 고마워요. – Ethanhunt

답변

0

이 예외를 가지고 있기 때문에 :

"create table"+NAMA_TABEL+" 

가해야합니다

Caused by: android.database.sqlite.SQLiteException: near "tablehobiku": syntax error (code 1): , while compiling: create tablehobiku (_id integer PRIMARY KEY autoincrement,nama text,hobi text) 

스크립트가 잘못된 것입니다, 그래서 당신은에 공간을 추가해야합니다

을 "테이블 hobiku을 만들"수 있어야 be

"create table "+NAMA_TABEL+" 
0

당신 맞춤법 오류가 있습니다. table hobiku이 아닌 tablehobiku을 사용하십시오.

관련 문제