package com.hannam.project.sqlite;


import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class ActivityAndroidSQLite extends Activity {
 private EditText code = null;
 private EditText name = null;
 private EditText ooo = null;
 private EditText name2 = null;
 private EditText number = null;
 private EditText add = null;
 private EditText eadd = null;
 
 private EditText query_print = null;
 private Button infoRead = null;
 private Button infoWrite = null;
 private Button infoDelete = null;
 private final String db_file_name = "data.db";
 private final int db_version = 1;
 private DBHelper dbHelper = null;
 private SQLiteDatabase sqliteDB = null;

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

  this.code = (EditText) findViewById(R.id.code);
  this.name = (EditText) findViewById(R.id.name);
  this.ooo = (EditText) findViewById(R.id.ooo);
  this.name2 = (EditText) findViewById(R.id.name2);
  this.number = (EditText) findViewById(R.id.number);
  this.add = (EditText) findViewById(R.id.add);
  this.eadd = (EditText) findViewById(R.id.eadd);
  this.query_print = (EditText) findViewById(R.id.et_queryprint);

  this.infoRead = (Button) findViewById(R.id.Button_read);
  this.infoWrite = (Button) findViewById(R.id.Button_write);
  this.infoDelete = (Button) findViewById(R.id.Button_delete);

  this.infoRead.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    String str = "";
    Cursor cursor = null;
    System.out.println("읽기버튼클릭");
    try {
     cursor = readDB(code.getText().toString(), name
       .getText().toString());
     cursor.moveToFirst();
     System.out
       .println("커서의 현재 포커스위치 : " + cursor.getPosition());
     System.out.println("컬럼의 수 : " + cursor.getColumnCount());
     System.out.println("레코드 수 : " + cursor.getCount());

     while (true) {
      for (int i = 0; i < cursor.getColumnCount(); i++) {
       str += cursor.getColumnName(i) + " : "
         + cursor.getString(i) + "  ";

      }
      break;
     }
     query_print.setText(str);
    } catch (Exception e) {
     System.out.println("읽기 에러발생 : " + e.getMessage());
    } finally {
     cursor.close();
    }

   }
  });

  this.infoWrite.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    System.out.println("쓰기 버튼 클릭");

    try {
     writeDB(code.getText().toString(), name.getText()
       .toString());
    } catch (Exception e) {
     System.out.println("쓰기에러발생 : " + e.getMessage());
    }
   }

  });

  this.infoDelete.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    System.out.println("삭제 버튼 클릭");
    try {
     deleteDB(code.getText().toString(), name
       .getText().toString());
    } catch (Exception e) {
     System.out.println("삭제 에러발생 : " + e.getMessage());
    }
   }
  });

  this.dbHelper = new DBHelper(this);

  this.sqliteDB = this.dbHelper.getWritableDatabase();
 }

 private void writeDB(String code, String name) throws Exception {
  ContentValues cv = new ContentValues();
  cv.put("code", code);
  cv.put("name", name);

  long colNum = this.sqliteDB.insert("CODENAME", "", cv);
  this.showToast("쓰기 완료 : " + colNum);
 }

 private Cursor readDB(String code, String name) throws Exception {
  Cursor cursor = this.sqliteDB.query("codename", new String[] { "code",
    "name" }, "code = ? and name = ?",
    new String[] { code, name }, null, null, null, null);
  
  this.showToast("읽기완료");
  return cursor;
 }
 
 private void deleteDB(String code, String name) throws Exception {
  int colNum = this.sqliteDB.delete("codename", "code = ? and name = ?", new String[]{code,name});
  this.showToast("삭제 완료 : " + colNum);
 }

 public class DBHelper extends SQLiteOpenHelper {
  public DBHelper(Context context) {
   super(context,db_file_name,null, db_version);
  }
  
  @Override
  public void onCreate(SQLiteDatabase db) {
   System.out.println("데이터베이스가 생성되었습니다.");
  }
  
  @Override
  public synchronized void close() {
   super.close();
   System.out.println("데이터베이스가 닫혔습니다.");
  }
  
  @Override
  public void onOpen(SQLiteDatabase db) {
   super.onOpen(db);
   System.out.println("데이터베이스가 오픈되었습니다.");
   db.execSQL("create table if not exists codename" + "(code VARCHAR(20) primary key," + "name CARCHAR(20))");
  }
  
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   db.execSQL("drop table if exists codename");
   onCreate(db);
  }
 }
 
 
 
 private void showToast(String msg) {
  Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
 }
 
 @Override
 protected void onDestroy() {
  super.onDestroy();
  this.sqliteDB.close();
 }
}


--

쓰기완료는 뜨는데 읽기누르면 에러창이 떠요...;;; 왜그러는지 알려주셔요 ㅠㅠ 고수분들!!

Logcat 추가입니다 ㅋㅋ;;
11-11 01:36:08.341: ERROR/Database(243): Error inserting code=q name=r
11-11 01:36:08.341: ERROR/Database(243): android.database.sqlite.SQLiteException: table CODENAME has no column named code: , while compiling: INSERT INTO CODENAME(code, name) VALUES(?, ?);
11-11 01:36:08.341: ERROR/Database(243):     at android.database.sqlite.SQLiteProgram.native_compile(Native Method)
11-11 01:36:08.341: ERROR/Database(243):     at android.database.sqlite.SQLiteProgram.compile(SQLiteProgram.java:110)
11-11 01:36:08.341: ERROR/Database(243):     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
11-11 01:36:08.341: ERROR/Database(243):     at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:41)
11-11 01:36:08.341: ERROR/Database(243):     at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1026)
11-11 01:36:08.341: ERROR/Database(243):     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1412)
11-11 01:36:08.341: ERROR/Database(243):     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1285)
11-11 01:36:08.341: ERROR/Database(243):     at com.hannam.project.sqlite.ActivityAndroidSQLite.writeDB(ActivityAndroidSQLite.java:128)
11-11 01:36:08.341: ERROR/Database(243):     at com.hannam.project.sqlite.ActivityAndroidSQLite.access$4(ActivityAndroidSQLite.java:123)
11-11 01:36:08.341: ERROR/Database(243):     at com.hannam.project.sqlite.ActivityAndroidSQLite$2.onClick(ActivityAndroidSQLite.java:95)
11-11 01:36:08.341: ERROR/Database(243):     at android.view.View.performClick(View.java:2364)
11-11 01:36:08.341: ERROR/Database(243):     at android.view.View.onTouchEvent(View.java:4179)
11-11 01:36:08.341: ERROR/Database(243):     at android.widget.TextView.onTouchEvent(TextView.java:6540)
11-11 01:36:08.341: ERROR/Database(243):     at android.view.View.dispatchTouchEvent(View.java:3709)
11-11 01:36:08.341: ERROR/Database(243):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
11-11 01:36:08.341: ERROR/Database(243):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
11-11 01:36:08.341: ERROR/Database(243):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
11-11 01:36:08.341: ERROR/Database(243):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
11-11 01:36:08.341: ERROR/Database(243):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
11-11 01:36:08.341: ERROR/Database(243):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
11-11 01:36:08.341: ERROR/Database(243):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
11-11 01:36:08.341: ERROR/Database(243):     at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
11-11 01:36:08.341: ERROR/Database(243):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
11-11 01:36:08.341: ERROR/Database(243):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
11-11 01:36:08.341: ERROR/Database(243):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-11 01:36:08.341: ERROR/Database(243):     at android.os.Looper.loop(Looper.java:123)
11-11 01:36:08.341: ERROR/Database(243):     at android.app.ActivityThread.main(ActivityThread.java:4363)
11-11 01:36:08.341: ERROR/Database(243):     at java.lang.reflect.Method.invokeNative(Native Method)
11-11 01:36:08.341: ERROR/Database(243):     at java.lang.reflect.Method.invoke(Method.java:521)
11-11 01:36:08.341: ERROR/Database(243):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11-11 01:36:08.341: ERROR/Database(243):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
11-11 01:36:08.341: ERROR/Database(243):     at dalvik.system.NativeStart.main(Native Method)
11-11 01:36:08.511: INFO/NotificationService(54): enqueueToast pkg=com.hannam.project.sqlite callback=android.app.ITransientNotification$Stub$Proxy@43d41dc8 duration=0
11-11 01:36:08.890: INFO/ARMAssembler(54): generated scanline__00000177:03515104_00001A01_00000000 [ 73 ipp] (98 ins) at [0x47df18:0x47e0a0] in 1248964 ns
11-11 01:36:09.641: INFO/System.out(243): 읽기버튼클릭
11-11 01:36:09.651: INFO/System.out(243): 읽기 에러발생 : no such column: code: , while compiling: SELECT code, name FROM codename WHERE code = ? and name = ?
11-11 01:36:09.661: DEBUG/AndroidRuntime(243): Shutting down VM
11-11 01:36:09.661: WARN/dalvikvm(243): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
11-11 01:36:09.661: ERROR/AndroidRuntime(243): Uncaught handler: thread main exiting due to uncaught exception
11-11 01:36:09.731: ERROR/AndroidRuntime(243): java.lang.NullPointerException
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at com.hannam.project.sqlite.ActivityAndroidSQLite$1.onClick(ActivityAndroidSQLite.java:82)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at android.view.View.performClick(View.java:2364)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at android.view.View.onTouchEvent(View.java:4179)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at android.widget.TextView.onTouchEvent(TextView.java:6540)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at android.view.View.dispatchTouchEvent(View.java:3709)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at android.os.Looper.loop(Looper.java:123)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at android.app.ActivityThread.main(ActivityThread.java:4363)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at java.lang.reflect.Method.invokeNative(Native Method)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at java.lang.reflect.Method.invoke(Method.java:521)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
11-11 01:36:09.731: ERROR/AndroidRuntime(243):     at dalvik.system.NativeStart.main(Native Method)
11-11 01:36:09.802: INFO/Process(54): Sending signal. PID: 243 SIG: 3
11-11 01:36:09.811: INFO/dalvikvm(243): threadid=7: reacting to signal 3
11-11 01:36:09.931: INFO/dalvikvm(243): Wrote stack trace to '/data/anr/traces.txt'
11-11 01:36:12.862: INFO/Process(243): Sending signal. PID: 243 SIG: 9
11-11 01:36:12.921: INFO/ActivityManager(54): Process com.hannam.project.sqlite (pid 243) has died.
11-11 01:36:12.972: INFO/WindowManager(54): WIN DEATH: Window{43d767f0 com.hannam.project.sqlite/com.hannam.project.sqlite.ActivityAndroidSQLite paused=false}
11-11 01:36:12.972: INFO/WindowManager(54): WIN DEATH: Window{43c7eea8 Toast paused=false}
11-11 01:36:13.282: INFO/UsageStats(54): Unexpected resume of com.android.launcher while already resumed in com.hannam.project.sqlite
11-11 01:36:13.552: WARN/InputConnectionWrapper.ICC(251): Timed out waiting on IInputContextCallback
11-11 01:36:13.722: WARN/InputManagerService(54): Got RemoteException sending setActive(false) notification to pid 243 uid 10026
11-11 01:59:27.361: DEBUG/dalvikvm(54): threadid=15: bogus mon 1+0>0; adjusting