>source

내 문제는 현재 레이아웃을 다른 레이아웃으로 의도하고 있는데 런타임 예외 오류가 있습니다. 내 문제는 현재 레이아웃을 다른 레이아웃으로 만들려고하는데 런타임 예외 오류가 있습니다. 내 문제는 현재 레이아웃을 다른 레이아웃으로 만들려고하는데 런타임 예외 오류가 있습니다. 내 문제는 현재 레이아웃을 다른 레이아웃으로 의도하고 있는데 런타임 예외 오류가 있습니다.

MainActivity.java

package com.example.kaylee.tutorfinder;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
    EditText email;
    EditText password;
    Button login;
    Button signup;
    DBHelper db;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        db = new DBHelper(this);
        email = findViewById(R.id.editText_email);
        password = findViewById(R.id.editText_password);
        login = findViewById(R.id.btnlogin);
        signup = findViewById(R.id.btnsignup);

        signup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent signupIntent = new Intent(MainActivity.this, SignUp.class);
                startActivity(signupIntent);
            }
        });
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    String user = email.getText().toString();
                    String pass = password.getText().toString();
                    Boolean res = db.checkAcc(user,pass);
                    if(res==true){
                        Intent mainIntent = new Intent(MainActivity.this, MainPage.class);
                        startActivity(mainIntent);
                    }
                    else{
                        Toast.makeText(MainActivity.this,"Please Enter Again",Toast.LENGTH_SHORT).show();
                    }

            }
        });
    }
}

DBHelper.java

package com.example.kaylee.tutorfinder;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteStatement;
public class DBHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME="register.db";
    public static final String TABLE_NAME="register";
    public static final String COL_1="ID";
    public static final String COL_2="email";
    public static final String COL_3="password";

    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
    }
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL("CREATE TABLE register (ID INTEGER PRIMARY KEY AUTOINCREMENT,email TEXT UNIQUE, password TEXT)");
    }
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(sqLiteDatabase);
    }
    public long AddAcc(String email, String password){
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("email",email);
        contentValues.put("password",password);
        long res = db.insert("register",null,contentValues);
        db.close();
        return res;
    }
    public boolean checkAcc(String username,String password){
       String[] columns = { COL_1 };
       SQLiteDatabase db = getReadableDatabase();
       String selection = COL_2  + "=?" + " and " + COL_3 + "=?";
       String[] selectionArgs = {username,password};
       Cursor cursor = db.query(TABLE_NAME,columns,selection,selectionArgs,null,null,null);
       int count = cursor.getCount();
       cursor.close();
       db.close();

       if(count>0)
           return true;
       else
           return false;
    }

    public void queryData(String sql){
        SQLiteDatabase database = getWritableDatabase();
        database.execSQL(sql);
    }
    public void insertData(String name,double price,String description,byte[] image ){
        SQLiteDatabase database = getWritableDatabase();
        String sql = "INSERT INTO ITEMS VALUES (NULL,?,?,?) ";
        SQLiteStatement statement = database.compileStatement(sql);
        statement.clearBindings();
        statement.bindString(1,name);
        statement.bindDouble(2,price);
        statement.bindString(3,description);
        statement.bindBlob(4,image);

        statement.executeInsert();
    }
    public Cursor getData(String sql){
        SQLiteDatabase database = getReadableDatabase();
        return database.rawQuery(sql,null);
    }

}

할 예정인 페이지

Mainpage.java

package com.example.kaylee.tutorfinder;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.FileNotFoundException;
import java.io.InputStream;
public class MainPage extends AppCompatActivity {

    EditText edtName,edtPrice,edtdesc;
    Button btnPost,btnImage;
    ImageView imageView;
    public static SQLiteOpenHelper DBHelper;
    final int REQUEST_CODE_GALLERY = 999;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainpage);
        DBHelper = new DBHelper(this);
        ((DBHelper) DBHelper).queryData("CREATE TABLE IF NOT EXISTS PRODUCT " +
                "(ID INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, price VARCHAR, description VARCHAR,image BLOB");
        edtName = (EditText)findViewById(R.id.edtName);
        edtPrice = (EditText)findViewById(R.id.edtPrice);
        edtdesc = (EditText)findViewById(R.id.edtDescription);
        btnPost = (Button)findViewById(R.id.btnPost);
        btnImage = (Button)findViewById(R.id.btnImage);
        imageView = (ImageView)findViewById(R.id.imageView);
        btnImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ActivityCompat.requestPermissions(
                        MainPage.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                        REQUEST_CODE_GALLERY
                );
            }
        });

    }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

        if(requestCode == REQUEST_CODE_GALLERY){
            if(grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                Intent intent = new Intent(Intent.ACTION_PICK);
                intent.setType("image/*");
                startActivityForResult(intent,REQUEST_CODE_GALLERY);
            }
            else{
                Toast.makeText(getApplicationContext(),"Permission Denied",Toast.LENGTH_SHORT).show();
            }
            return;

        }
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == REQUEST_CODE_GALLERY && resultCode == RESULT_OK && data !=null){
            Uri uri = data.getData();
            try{
                InputStream inputStream = getContentResolver().openInputStream(uri);
                Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                imageView.setImageBitmap(bitmap);
            } catch(FileNotFoundException e){
                e.printStackTrace();
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
}

오류 로그

05-23 04:32:03.325 9734-9734/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.kaylee.tutorfinder, PID: 9734
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.kaylee.tutorfinder/com.example.kaylee.tutorfinder.MainPage}: android.database.sqlite.SQLiteException: near "BLOB": syntax error (code 1): , while compiling: CREATE TABLE IF NOT EXISTS PRODUCT (ID INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, price VARCHAR, description VARCHAR,image BLOB
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
        at android.app.ActivityThread.access$800(ActivityThread.java:151)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5254)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: android.database.sqlite.SQLiteException: near "BLOB": syntax error (code 1): , while compiling: CREATE TABLE IF NOT EXISTS PRODUCT (ID INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, price VARCHAR, description VARCHAR,image BLOB
        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
        at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
        at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1674)
        at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1605)
        at com.example.kaylee.tutorfinder.DBHelper.queryData(DBHelper.java:63)
        at com.example.kaylee.tutorfinder.MainPage.onCreate(MainPage.java:36)
        at android.app.Activity.performCreate(Activity.java:5990)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
        at android.app.ActivityThread.access$800(ActivityThread.java:151) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5254) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

  • 답변 # 1

    DBManager에서이 오류를 해결하십시오

    Unable to start activity ComponentInfo{com.example.kaylee.tutorfinder/com.example.kaylee.tutorfinder.MainPage}: android.database.sqlite.SQLiteException: near "BLOB": syntax error (code 1): , while compiling: CREATE TABLE IF NOT EXISTS PRODUCT (ID INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, price VARCHAR, description VARCHAR,image BLOB
    
    

    최근 검색어에)을 추가 한 다음 다시 시도하십시오

  • 이전 다양한 날짜와 일치하는 RegEx
  • 다음 django - 대시 앱에서 두 개의 콜백 기능을 함께 연결할 수 없습니다