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

db 데이터 베이스 질문

0 추천
public class Record extends SQLiteOpenHelper {

    static final String DATABASE_NAME = "mydb.db"; // 사용할 DB명
    static final String table = "table";
    static final int DATABASE_VERSION = 1; // DB 버전

    public Record(Context context){
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override // 테이블 생성코드
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE IF NOT EXISTS" + table + 
" (" + "calo TEXT," + "timestamp DATE DEFAULT 
(datetime('now','localtime'));");
    }

    @Override // 테이블 삭제코드
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS table;");
        onCreate(db);
    }
}
 
 
 
public class end extends Activity{

Record record;
SQLiteDatabase db;

protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.end);

int calo =getIntent().getIntExtra("cal", 0);


record= new Record(this);
db= record.getWritableDatabase();
db.execSQL("INSERT INTO table VALUES ('"+calo+"')");


Cursor cursor = db.rawQuery("SELECT SUM(calo) FROM table ", null);

while(cursor.moveToNext()){
int addr = cursor.getInt(0);
String addrrr = Integer.toString(addr);
String datee = cursor.getString(1);
TextView TEXT =(TextView)findViewById(R.id.record);
TEXT.setText(addr + datee);
}
 
1.android.database.sqlite.SQLiteException: near "EXISTtable": 
syntax error (code 1): , while compiling: 
CREATE TABLE IF NOT EXISTtable (calo TEXT,timestamp DATE DEFAULT (datetime('now','localtime'));
라고 오류가 뜨거든요...
그래서 테이블 생성 하는 구문 뛰어 쓰기도 고쳐 봤는데도 똑같은 오류가 뜹니다...
무엇이 문제 일까요...
 
2. db.execSQL("CREATE TABLE IF NOT EXISTS" + table + 
" (" + "calo TEXT," + "timestamp DATE DEFAULT 
(datetime('now','localtime'));");
    }
이렇게 테이블 생성 구문을 넣었는데요...첫번째 컬럼에는 칼로리를 
두번째 컬럼에는 시간을 넣으려고 합니다.
 db.execSQL("INSERT INTO table VALUES 
('"+calo+"')");
그런데 인절트 구문을 쓸때도 타임스템프 구문을 넣어 줘야 할까요...
아니면 생성 할때 넣어 줬으니 안넣어 줘도 될까요..
착한파인애플 (120 포인트) 님이 2016년 5월 20일 질문

1개의 답변

0 추천

저도 db는 약하나 

일단 create에서 exists(띄어쓰기) s다음 띄어쓰기 필요하시고..

그 뒤에는 왜 + 로 나누신지 모르겠네요 그냥 붙여서 바로 하셔도 될텐데

예를 들어 뭐

tableName + "( _id INTEGER PRIMARY KEY AUTOINCREMENT, id text, 
name text, age integer)";

인설트는 뭐 위에랑 대충 맞추자면

String sql = "insert into " + tableName 
+ "(_id,id,name,age)"
 + " values(null,'" + id + "', '" + name + "', '" 
+ age + "')";
database.execSQL(sql);

 

익명사용자 님이 2016년 5월 20일 답변
뛰어 쓰기 했는데도 안되네요...ㅠㅠ
자문자답 : 맨 끝에 괄호 하나를 빼먹었네요...db.execSQL("CREATE TABLE tab ( _id INTEGER PRIMARY KEY AUTOINCREMENT, "
                +"cal TEXT,timestamp DATE DEFAULT (datetime('now','localtime')));");
...