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

db가 생성되지 않습니다. 도와주셔요

0 추천

 

 

그림에 보시면, 추가버튼을 누르면 listview에 현재 시간과 날짜를 뿌려주고 있습니다.

((EditText부분은 솔직히 필요가 없는 부분이라 무시합니다.))

이 데이타를 db에 저장하고 싶은데 마음대로 되질 않네요.

 

소스 중에 주황색 부분을 보시면, 현재는 EditText의 아이디로 지정된 값(inputText)를 임시로 넣어놨는데요

저 부분을 어떻게 고쳐야 할까요?

머가 잘못됐는지 지적부탁드립니다.

 

 

package com.androidhuman.example.ListViewExample;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
import android.app.ListActivity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;

public class ListViewExample extends ListActivity {
    private ArrayList<String> list;
    private ArrayAdapter<String> adapter;
    private EditText inputText;
    private Button inputButton;
   
    final static String dbName = "Time.db";
    final static int dbVersion = 1;
   
    DBHelper dbHelper;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        inputText = (EditText)findViewById(R.id.inputText);
        inputButton = (Button)findViewById(R.id.inputButton);
        list = new ArrayList<String>();
       
        dbHelper = new DBHelper(this, dbName, null, dbVersion);
       
       
       
        inputButton.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View v) {
    
    SQLiteDatabase db;
       String sql;
    
    TimeZone timezone = TimeZone.getTimeZone("Etc/GMT-9");
    TimeZone.setDefault(timezone);
       
    SimpleDateFormat formater = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss", Locale.KOREA);
    Date current = new Date();
       
    String mtime = formater.format(current);
    System.out.println(mtime);
    //result.setText(result.getText().toString() + "\n"+ mtime + "  dBm");
    inputText.setText(mtime + " 측정값");
    
    list.add(inputText.getText().toString());
    inputText.setText("");
    adapter.notifyDataSetChanged();
    
    String Data = inputText.getText().toString();
        
       db = dbHelper.getWritableDatabase();
       sql = String.format("INSERT INTO dbName VALUES(NULL, '%s', '%s');", Data, "Anyang");
       db.execSQL(sql);
      
       dbHelper.close();
   } 
        });
       
        adapter = new ArrayAdapter<String>(this,
          android.R.layout.simple_list_item_1, list);      
        setListAdapter(adapter);
    }
   
    class DBHelper extends SQLiteOpenHelper{
     
        public DBHelper(Context context, String name, CursorFactory factory, int version) {
           super(context, name, factory, version);
        }

     @Override
        public void onCreate(SQLiteDatabase db) {
           db.execSQL("CREATE TABLE dbName (_id INTEGER PRIMARY KEY AUTOINCREMENT," +
           " Datum TEXT, power INTEGER);");
     }

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

 

 

 

 

 

앤드류이드 (6,190 포인트) 님이 2013년 5월 2일 질문
앤드류이드님이 2013년 5월 2일 수정

1개의 답변

0 추천
 
채택된 답변
SQLiteDataBase.insert

메소드를 사용하세요(static아님다)

그리고 만약 format을 사용하시려면 into TABLE values ()가 아니고

into TABLE (`인덱스 제외`) values('인덱스 제외')

이렇게 하셔야 합니다

아니면 null대신 autoincreament (확실하진 않습니다 SQLite를 거의 안써서요)

을 넣어보세요
GozaMaker (4,740 포인트) 님이 2013년 5월 3일 답변
앤드류이드님이 2013년 5월 3일 채택됨
...