首页 > 解决方案 > 与数据库相关的错误未在 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);
            }
        });
    }
}

标签: android

解决方案


错误代码:1(SQLITE_ERROR) 原因:SQL(查询)错误或缺少数据库。

由于您修改了数据库/表的某些部分,因此您需要重新安装您的应用程序。现在的版本与以前的版本完全不同。


推荐阅读