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

DB를 불러오는 과정에서 syntax error 가 뜹니다..

0 추천

SQLite에서 특정 데이터를 가져와 

다른 Activitiy에서 값을 저장하려고 하는 도중에 sql부분에서 오류가 뜹니다.

일단 데이터를 모두 가져와서 열로 비교를 하려고 하는뎅..

public class LoginActivity extends AppCompatActivity {
    DBHelper_User db;
    List<UserModel> list;
    TextView Idinput, Pwdinput, Nameinput;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        Nameinput = (TextView)findViewById(R.id.inputName);
        Idinput = (TextView)findViewById(R.id.inputId);
        Pwdinput = (TextView)findViewById(R.id.inputPwd);
        final EditText LogId = (EditText)findViewById(R.id.logID);
        final EditText LogPwd = (EditText)findViewById(R.id.logPWD);
        Button LogBtn = (Button) findViewById(R.id.Login);
        Button Regist = (Button)findViewById(R.id.Regist);

        db = new DBHelper_User(this);
        final UserModel model = new UserModel();
        list = db.GetAllUser();

 DB에서 불러오는 부분입니다.

public List<UserModel> GetAllUser(){
    StringBuffer stringBuffer = new StringBuffer();
    stringBuffer.append("SELECT _ID, UserId, UserPwd, UserName FROM User order by _ID desc");
    SQLiteDatabase sdb = getReadableDatabase();
    Cursor cursor = sdb.rawQuery(sdb.toString(), null);
    List<UserModel> userList = new ArrayList<UserModel>();
    Log.d("RESULT",cursor.getCount()+"");
    UserModel user = null;
    while (cursor.moveToNext()){
        user = new UserModel();
        user.ID = String.valueOf(cursor.getInt(0));
        user.UserId = cursor.getString(1);
        user.UserPwd = cursor.getString(2);
        user.UserName = cursor.getString(3);
        userList.add(user);
        }
    sdb.close();
    return userList;
}

여기서 Cursor부분에서 syntax error가 뜹니다ㅠㅠ

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jangan.myapplication/com.example.jangan.myapplication.LoginActivity}: android.database.sqlite.SQLiteException: near "SQLiteDatabase": syntax error (code 1 SQLITE_ERROR): , while compiling: SQLiteDatabase: /data/user/0/com.example.jangan.myapplication/databases/User
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: android.database.sqlite.SQLiteException: near "SQLiteDatabase": syntax error (code 1 SQLITE_ERROR): , while compiling: SQLiteDatabase: /data/user/0/com.example.jangan.myapplication/databases/User
        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:903)
        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:514)
        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
        at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
        at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:46)
        at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1408)
        at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1347)
        at com.example.jangan.myapplication.DBHelper_User.GetAllUser(DBHelper_User.java:70)
        at com.example.jangan.myapplication.LoginActivity.onCreate(LoginActivity.java:38)
        at android.app.Activity.performCreate(Activity.java:7136)
        at android.app.Activity.performCreate(Activity.java:7127)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6669) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

여기까지 입니다ㅠㅠ 왜 오류가 뜨는지 알려 주실 수 있으신가요?

그로악 (270 포인트) 님이 2018년 10월 26일 질문
com.example.jangan.myapplication.DBHelper_User.GetAllUser(DBHelper_User.jav
a:70)
DBHelper_User.java의 70번째 라인이 어디인지 표시해주세요.
ㅠㅠㅠ 답이 늦어 죄송합니다 70번째 라인은
Cursor cursor = sdb.rawQuery(sdb.toString(), null);
입니다.
UserModel쪽 문제인가 해서 다 점검해봤는데 아니네요..

1개의 답변

0 추천
SELECT _ID, UserId, UserPwd, UserName FROM User order by _ID desc

SELECT _id, UserId, UserPwd, UserName FROM User order by _id desc

SELECT * FROM User

로 했을 때 같은 에러가 나지 않는다면, sql 문에서 오류가 났으니 그 부분만 집중적으로 보면 됩니다. 


2018-10-30 수정

sdb.rawQuery(sdb.toString(), null); 가 70번째 라인이라면 sdb.rawQuery(stringBuffer.toString(), null); 으로 바꾸면 어떤가요?

쎄미 (162,410 포인트) 님이 2018년 10월 26일 답변
쎄미님이 2018년 10월 29일 수정
...