gpt4 book ai didi

java - Intent 另一个布局的运行时错误

转载 作者:行者123 更新时间:2023-12-02 05:20:16 25 4
gpt4 key购买 nike

我的问题是将我当前的布局转换为另一个布局,它有运行时异常错误。我的问题是将我当前的布局更改为另一个布局,它有运行时异常错误。我的问题是将我当前的布局更改为另一个布局,它有运行时异常错误。我的问题是将我当前的布局更改为另一个布局,它有运行时异常错误

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);

}


}

我想要的页面

主页.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)

最佳答案

尝试在 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

) 添加到查询的最后一个,然后重试

关于java - Intent 另一个布局的运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56268161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com