마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Eclipse의 안드로이드에서 SQLite 사용에 관해..

0 추천
질문) 다이얼로그 클래스의 EditText에서 입력받은 이름을 DB클래스로 가져와서
          INSERT시키고 싶습니다. get, set메소드를 잘 활용하면 될거같은데 
          잘 안되서 질문드립니다.

// 다이얼로그 클래스입니다.

import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class StageDialog extends Dialog {
	EditText edtName;
	Button btnConfirm, btnCancel;
        Handler handler;
	Context context;
	String name;

	public StageDialog(Context context) {
		super(context);
		this.context = context;
	}
	public String getName(String name) {
		return name;
	}
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.stagedialog);
		handler = new Handler();
		edtName = (EditText)findViewById(R.id.EdtName);
		btnConfirm = (Button)findViewById(R.id.BtnConfirm);
		btnCancel = (Button)findViewById(R.id.BtnCancel);
		
		
		btnConfirm.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				

				
				handler.post(new Runnable() { 					
					@Override
					public void run() {
						// TODO Auto-generated method stub
						/*db = helper.getWritableDatabase();
						name = edtName.getText().toString();
						String sql = "INSERT INTO PipeTBL" + " VALUES('"+ name+ "', 3);";
						db.execSQL(sql);
						db.close();*/
						
						Intent intent = new Intent(context.getApplicationContext(), GameActivity.class);
						context.startActivity(intent);

					}
				});
				
				
			} 
		}); 
		
		btnCancel.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				dismiss();
			}
		}); 
		
	}


==================================================================

// db 클래스입니다.

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class DBManager {
	private static final String DB_NAME = "pipe.db";  
	private static final int DB_VER = 1; 
	private static final String tableName = "PipeTBL";
	private OpenHelper helper; 
    private SQLiteDatabase db; // DB controller
    Context context;
    String name;

//	dbDBHelper myHelper = new dbHelper(this);
	
	public DBManager(Context context) {  
		super(); 
		this.context = context;
		this.helper = new OpenHelper(context, DB_NAME, null, DB_VER);
        db = helper.getWritableDatabase();
	}  
	
	// Opener of DB and Table
	private class OpenHelper extends SQLiteOpenHelper {

		public OpenHelper(Context context, String name, CursorFactory factory, int version) {
			super(context, name, factory, version);
			// TODO Auto-generated constructor stub
		}

		// 생성된 DB가 없을 경우에 한번만 호출됨
		@Override
		public void onCreate(SQLiteDatabase db) {
			// TODO Auto-generated method stub
			String createSql = "CREATE TABLE " + tableName + " ("
	                + "id Int NOT NULL AUTOINCREMENT PRIMARY KEY, " + "name Text, "
	                + "time Int)";
		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			// TODO Auto-generated method stub
			
		}
	}
	
//	 데이터 추가
	public void setName(String name) {
		this.name = name;
	}
	public void insertData() {
        String sql = "INSERT INTO " + tableName + " VALUES('"+ name+ "');";
        db.execSQL(sql);
        db.close();
        
    }

 

dmstjr1070 (140 포인트) 님이 2015년 11월 10일 질문
아래쪽에도 비슷한 질문을 본거 같은데요..
오류메세지도 좀적어주시면 좋겠습니다.

1개의 답변

0 추천
코딩 다 하신게 아닌거 같습니다.

OpenHelper 클래스에 onCreate에 테이블을 생성하는 sql 쿼리만 있고, 이를 실행하는 구문이 없습니다.

테이블이 없는데 저장이 될리 없겠지요.
dante2k (8,390 포인트) 님이 2015년 11월 12일 답변
...