【问题标题】:Why sqlite database is not being created?为什么没有创建 sqlite 数据库?
【发布时间】:2020-07-18 09:10:22
【问题描述】:

我知道这是一个重复的问题,但我搜索了所有相同的问题,但没有解决我的问题。我正在尝试创建一个包含一个表(users_information)的sqlite数据库,当用户按下注册按钮时我检查他的电子邮件是否存在于该表中但数据库没有创建(我查看了项目数据文件和什么都没发现)除了没有出现明显的异常吗?

这是 myDatabaseContract 类:

package com.example.registerandlogingapp;

import android.provider.BaseColumns;

public class MyDatabaseContract {

class UsersInformation implements BaseColumns {

    public static final String TABLE_NAME = "Users_Information";

    public static  final String USER_EMAIL_COLUMN = "User_Email";

    public static final String USER_PASSWORD_COLUMN = "User_Password";


}

} 

这里是 myDatabaseHelper 类:

package com.example.registerandlogingapp;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MyDatabaseHelper extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "MyDatabase.db";

private static final int DATABASE_VERSION = 1;

private static  String sqlCreateTable ;

public MyDatabaseHelper( Context context) {

super(context, DATABASE_NAME,null,DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {

sqlCreateTable = "CREATE TABLE  " + MyDatabaseContract.UsersInformation.TABLE_NAME

+ "(" + MyDatabaseContract.UsersInformation._ID +" INTEGER PRIMARY KEY," + MyDatabaseContract.UsersInformation.USER_EMAIL_COLUMN +" TEXT,"

+ MyDatabaseContract.UsersInformation.USER_PASSWORD_COLUMN + " TEXT);"; 

 db.execSQL(sqlCreateTable;
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

 }
 }

这里是 RegisterActivity :

   package com.example.registerandlogingapp;
import androidx.appcompat.app.AppCompatActivity;
import android.database.Cursor;
 import  android.database.sqlite.SQLiteDatabase;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.Toast;

public class RegisterActivity extends AppCompatActivity {

MyDatabaseHelper myDatabaseHelper;

SQLiteDatabase myDatabase;

Cursor cursor;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);


setContentView(R.layout.activity_register);

myDatabaseHelper = new MyDatabaseHelper(this);

myDatabase = myDatabaseHelper.getReadableDatabase();

Button registerButton = (Button) findViewById(R.id.registerButton);


registerButton.setOnClickListener(registerButtonListener);
}
 View.OnClickListener registerButtonListener = new View.OnClickListener()  {
  @Override
  public void onClick(View v) {

     String [] projection = { MyDatabaseContract.UsersInformation.USER_EMAIL_COLUMN };

     cursor = myDatabase.query(MyDatabaseContract.UsersInformation.TABLE_NAME,projection,null,null,null,null,

    
MyDatabaseContract.UsersInformation.USER_EMAIL_COLUMN);

     EditText emailEditText= (EditText) findViewById(R.id.emailEditText);

     String email = emailEditText.getText().toString();

     
while(cursor.moveToNext())
     {
         
Log.d("User_Email",cursor.getString(0));

         
if(cursor.getString(0).equals(email))
         {
             
Toast.makeText( getApplicationContext(),"This email already exists, please enter a different email",Toast.LENGTH_SHORT).show();
         }
         else {

             
Toast.makeText( getApplicationContext(),"You have successfully registered",Toast.LENGTH_SHORT).show();
         }
     }
     if(cursor != null)
     {
         
cursor.close();
     }
 }
 };

 @Override
 protected void onDestroy() {

if(myDatabaseHelper != null) {

    myDatabaseHelper.close();
}

if(myDatabase != null)
{
    myDatabase.close();
}

super.onDestroy();
}
}

【问题讨论】:

  • 你的意思是你运行应用后看不到SQLite文件夹?
  • @Brahma Datta 是的,而且查询没有实现,也没有出现异常
  • 您是否尝试将数据输入 SQLite DB?我看到没有将数据存储到数据库中的代码。 @mohamed

标签: android android-sqlite sqliteopenhelper saving-data


【解决方案1】:

试试这个 [MyDatabaseHelper 已编辑]

public static class MyDatabaseHelper extends SQLiteOpenHelper
{
    
    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "MyDatabase.db";
    private static  String sqlCreateTable ;

    public MyDatabaseHelper(Context context)
    {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

     @Override
     public void onCreate(SQLiteDatabase db) {
            sqlCreateTable = "CREATE TABLE IF NOT EXISTS " + MyDatabaseContract.UsersInformation.TABLE_NAME + "("
                 + MyDatabaseContract.UsersInformation._ID + " INTEGER PRIMARY KEY ," + MyDatabaseContract.UsersInformation.USER_EMAIL_COLUMN + " TEXT NOT NULL,"
                 + MyDatabaseContract.UsersInformation.USER_PASSWORD_COLUMN + " TEXT )" ;

            db.execSQL(sqlCreateTable);             

        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS " + MyDatabaseContract.UsersInformation.TABLE_NAME);
           
        }}

【讨论】:

    猜你喜欢
    • 2015-06-11
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 2011-04-01
    • 1970-01-01
    相关资源
    最近更新 更多