android - 与数据库相关的错误未在 android studio 中创建
问题描述
我已经创建了一个保存姓名、电子邮件和密码的数据库。
将这些详细信息保存到数据库中时,它向我显示错误,例如 - 数据库没有任何名为 email 的列。
错误代码:1(SQLITE_ERROR) 原因:SQL(查询)错误或缺少数据库。(表 Users 没有名为 Email (code 1): 的列,编译时:INSERT INTO Users(Password,Email,Name) VALUES (?,?,?))
在 com.example.foody.Storage.newUser(Storage.java:42)
在 com.example.foody.Register$1.onClick(Register.java:32) “缺少查询或数据库”
存储类(助手)
package com.example.foody;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.strictmode.SqliteObjectLeakedViolation;
public class Storage extends SQLiteOpenHelper
{
// for table 1
public static final String d_name="Foody.db";
public static final String t1="Users";
public static final String c1="Name",c2="Email",c3="Password";
public Storage(Context ct)
{
super(ct,d_name,null,1);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL("CREATE TABLE "+t1+"("+c1+" TEXT,"+c2+" TEXT,"+c3+" TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("Drop Table If EXISTS "+t1);
onCreate(db);
}
public void newUser(String a,String b,String c)
{
SQLiteDatabase db=this.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put(c1,a);
cv.put(c2,b);
cv.put(c3,c);
db.insert(t1,null,cv);
db.close();
}
public boolean checkUser(String email,String pass)
{
SQLiteDatabase db=this.getWritableDatabase();
Cursor cr=db.rawQuery("select * from " + t1 + " where Email = ? AND Password = ? ", new String[] {email,pass});
if(cr.getCount()==0){
return false;}
else{
return true;}
}
}
```
Now this is the class from where I'm calling
```
package com.example.foody;
import android.content.Intent;
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 Register extends AppCompatActivity
{
Button b1;
EditText e1,e2,e3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
e1=findViewById(R.id.sign_e1);
e2=findViewById(R.id.sign_e2);
e3=findViewById(R.id.sign_e3);
b1=findViewById(R.id.sign_b1);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Storage sob=new Storage(Register.this);
sob.newUser(e1.getText().toString(),e2.getText().toString(),e3.getText().toString());
Toast.makeText(Register.this,"You are registered",Toast.LENGTH_LONG).show();
Intent it=new Intent(Register.this,Login.class);
startActivity(it);
}
});
}
}
解决方案
错误代码:1(SQLITE_ERROR) 原因:SQL(查询)错误或缺少数据库。
由于您修改了数据库/表的某些部分,因此您需要重新安装您的应用程序。现在的版本与以前的版本完全不同。
推荐阅读
- c# - 工厂方法以及在哪里选择要使用哪个工厂
- encryption - 我无法使用 GPG 钥匙串解密或验证使用赛门铁克 PGP 发送的消息
- ffmpeg - Ffmpeg 以交互方式模糊部分视频
- c# - 矿池创世交易与协议版本不兼容
- express - express-jwt - 显示调试权限
- wifi - 互联网可以在 VPN 上运行,但不能在以太网连接中运行
- javascript - 尽管我使用了异步等待,但在 put 请求之前执行 http 请求
- python - Python 3:使用 while True 循环在列表中追加整数
- stata - 如何在 Stata 中遮蔽衰退期?
- r - 将 Tukey 的测试字母添加到混合模型的箱线图中