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

db에 값이 안들어갑니다.

0 추천

package com.example.gps0528;

import java.util.ArrayList;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class dbActivity extends ListActivity {
 
   ArrayList<String> item;
   ArrayAdapter<String> adapter;
   ListView listo;
   TextView data;
 
   Context context;
      DBHelper dbHelper;
  
   final static String dbName = "terbo.db";
   final static int dbVersion = 2;
  
   SQLiteDatabase db;
   String sql;
 
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     //setContentView(R.layout.activity2nd);
     // TODO Auto-generated method stub
    
    
    
     Intent intent = getIntent();
    
     String time = intent.getExtras().getString("time").toString();
     String juso = intent.getExtras().getString("local").toString();
   
    
     item = new ArrayList<String>();
     item.add(time+juso);
   
    
     adapter = new ArrayAdapter<String>(this,
          android.R.layout.simple_list_item_multiple_choice, item);
     getListView().setTextFilterEnabled(true);
    
     //리스트액티비티의 아이디 찾는 방법은 다르다.
     listo = (ListView)findViewById(android.R.id.list);
  listo.setAdapter(adapter); 
  
  adapter.notifyDataSetChanged();   
   
  //db에 저장
  dbHelper = new DBHelper(this, dbName, null, dbVersion);
  db = dbHelper.getWritableDatabase();
  sql=String.format("INSERT INTO dbName VALUES(null, '%s', '%s');", adapter, 55);
  db.execSQL(sql);
 }
 
 
 
 public class DBHelper extends SQLiteOpenHelper {
  //생성자
  public DBHelper(Context context, String name, CursorFactory factory, int version) {
   super(context, name, factory, version);
  }
        //최초 DB를 만들때 한번만 호출된다.
  @Override
  public void onCreate(SQLiteDatabase db) {
   // TODO Auto-generated method stub
   db.execSQL("CREATE TABLE dbName(_id INTEGER PRIMARY KEY AUTOINCREMENT,"+ "time INTEGER, juso TEXT);");
  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   // TODO Auto-generated method stub
   db.execSQL("DROP TABLE IF EXISTS dbName");
   onCreate(db);
  }  
 }
}

 

 

 

time 필드안에

현재시간과 날짜값이 들어가야는데

안 들어가네여.

현재시간과 날짜는 이전액티비티에서 버튼을 클릭해서 얻은 값을  intent를 이용하여

위소스의 액티비티로 넘겨주는 형태입니다.

adapter값 대신 listo, item 다 넣어봤는대 안되네요

다른 문제인것 같은데...감을 못잡겠네요

 

산넘어 산.............산을 대체 몇개를 넘어야 ................

;;;;;

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

2개의 답변

0 추천
 
채택된 답변
RecNo라는 뭔지 모를 필드도 있고.. adapter, 55 자리가 time, juso가 되야되는거 아닌가요?

위에서 변수로 가지고 계신 것 같은데 왠 adapter 객체를 넣으시는건지 모르겠네요.

INSERT INTO dbName(time, juso) VALUES('%s', '%s') <= time, juso

로 하시면 되지 않을까요. db테이블 이름이 참 미묘하군요 dbName...
천도복숭아 (6,080 포인트) 님이 2013년 6월 4일 답변
앤드류이드님이 2013년 6월 5일 채택됨
sql=String.format("INSERT INTO dbName(time,juso) VALUES('%s', '%s')");

말씀대로 고쳐봤는데요
MissingFormatArgumentException 에러가 나네요
VALUES('%s', '%s')", time, juso);
를 하셔야..
String.format에서 %s 자리를 채워줘야죠.
sql=String.format("INSERT INTO dbName(time,juso) VALUES('%s', '%s');", time, juso);

그래도 db에 값이 안들어가네요..
아 어디가 문제인지 ㅠ
혹시 db를 안 닫아줘서 그런가요>
로그캣에 워닝같은게 찍힐 것 같은데 올려주세요.
워닝이 주황색이죠? 그런건 안나오네요.
초면에 죄송스럽지만 이메일로 프로젝트 파일 보내드릴테니 한번 체크해주시면 안될까용?
이걸로 3주째 제자리걸음만 하고 있네요.
 
바쁘시겠지만. 정중히 요청드려봅니다.
다른 곳에도 문제가 있었군요.
테이블이름이 왜 dbName인가 했더니.. 전역으로 dbName = "turbo.db"로 선언해놓으시고 실제로 구문안에서는 dbName이라는 스트링 자체로 처리하고 계시네요.
dbHelper = new DBHelper(this, "dbName", null, dbVersion);
이렇게 바꾸시던지, 아니면 dbName 문자열 부분을 다 변수 사용으로 변환하셔야겠네요.
테이블 이름 아까 희안하다고 하셔서 눈치까고 이미 고쳐봤는데요.ㅋㅋ
db에 안 들어가는 현상은 똑같더라구요.
암튼 감사드리구요. 하루더 머리 싸매고 해보고 내일 다시 질문드릴께요.^^ 감사해요 복숭아님. 저녁식사 맛있게 하세요
문제가 생겼다면 분명 logcat이 떴을 겁니다.
그렇지않다면 아예 다른 문제일 수도 있습니다.
스샷을 보면 insert되긴되는데 이상한 값이 들어가는거 아닌가요?
db.execSQL(sql);
이거 하시기전에 Log.d("tag", sql); 하셔서 원하시는 sql로 잘 문자열이 만들어졌는지도 확인해보세요.
네. 감사합니다. 좀더 집중을 발휘해봐야겠어요
0 추천

sql=String.format("INSERT INTO dbName(time,juso) VALUES('%s', '%s');", time, juso);

스트링형으로 insert 하시는데 테이블에서 time컬럼 속성이 스트링인지 확인해보세요

각각 컬럼명datatype 확인해보세요...

sql=String.format("INSERT INTO dbName(time,juso) VALUES('%s', '%s');", time, juso);

 

bangbang (8,820 포인트) 님이 2013년 6월 5일 답변
...