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

sqlite를 이용하여 테이블을 생성하였습니다만 테이블 조회나 insert가 되지 않습니다. 도움이 필요해요!

0 추천
public void onClick(View view) {

                String dbName = "MYDB.db";
                EditText setnameEt = (EditText) findViewById(R.id.setname);
                EditText setpasswordEt=(EditText) findViewById(R.id.setpassword);
                EditText setkeyfinderEt=(EditText) findViewById(R.id.setkeyfinder);

                String setname = setnameEt.getText().toString();
                String setpassword = setpasswordEt.getText().toString();
                String setkeyfinder = setkeyfinderEt.getText().toString();

                int dbMode = Context.MODE_PRIVATE;


                SQLiteDatabase db;
                db = openOrCreateDatabase(dbName, dbMode, null);



                if( setkeyfinder.equals("")    ||    setpassword.equals("")    ||   setname.equals("") )
                {
                    Toast toast = Toast.makeText(MemberRegister.this, "input all blanks.", Toast.LENGTH_SHORT );
                    toast.show();

                }

                else
                {
                    Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
                    if (c.moveToFirst())
                    {
                        for (; ; ) {
                            Log.e(TAG, "table name:" + c.getString(0));
                            if (!c.moveToNext())
                                break;
                        }
                    }


                    String tablecheck="SELECT count(*) FROM sqlite_master WHERE type = 'table' AND name ="+setname+";";

                    db.execSQL(tablecheck);

                    if(tablecheck.equals(setname))
                    {
                        Toast toast = Toast.makeText(MemberRegister.this, "간단한 토스트메시지", Toast.LENGTH_SHORT );
                        toast.show();
                        //페이지 이동

                    }
                    else
                    {

                        String sql = "CREATE TABLE IF NOT EXISTS " + setname + "( "
                                + "_password TEXT PRIMARY KEY, "

                                + "keyfinder TEXT, "

                                + "category TEXT,"

                                + "domain TEXT,"

                                + "ids TEXT,"

                                + "passwords TEXT"

                                + ");";

                        db.execSQL(sql);



                    //sql = "insert into " + setname + " (_password,keyfinder) values(" + setpassword + "," + setkeyfinder + ");";
                        //db.execSQL(sql);


                    }

                }


            }

        }
        );


    }
}

로그에는 분명 테이블이 존재한다고 나오는데 인서트나 테이블 조회와 같은 쿼리를 실행하면

no such column 에러가 뜹니다. 이유를 알 수 있을까요??

익명사용자 님이 2016년 10월 29일 질문
String tablecheck="SELECT count(*) FROM sqlite_master WHERE type = 'table' AND name ='"+setname+"'"
로 조회를 해보세요.
String tablecheck="SELECT count(*) FROM sqlite_master WHERE type = 'table' AND name ='"+setname+"'";
이렇게 코드를 수정하고 빌드를 시켜보았습니다. 하지만
unknown error (code 0): Queries can be performed using SQLiteDatabase query or rawQuery methods only. 이런식으로 오류가 나더군요 ..
흐엉 ㅠㅠ
select 문에  execSQL 메소드를 쓸 수가 없는 것 같은데요. rawQuery메소드를 사용해보세요.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...