Android 为什么不创建sqlite数据库?
我知道这是一个重复的问题,但我已经搜索了所有相同的问题,没有解决我的问题。我试图创建一个包含一个表(用户信息)的sqlite数据库,当用户按下注册按钮时,我检查他的电子邮件是否存在于该表中,但数据库没有创建(我查看了项目数据文件,没有发现任何内容),而且没有出现明显的异常 以下是myDatabaseContract类:Android 为什么不创建sqlite数据库?,android,android-sqlite,sqliteopenhelper,saving-data,Android,Android Sqlite,Sqliteopenhelper,Saving Data,我知道这是一个重复的问题,但我已经搜索了所有相同的问题,没有解决我的问题。我试图创建一个包含一个表(用户信息)的sqlite数据库,当用户按下注册按钮时,我检查他的电子邮件是否存在于该表中,但数据库没有创建(我查看了项目数据文件,没有发现任何内容),而且没有出现明显的异常 以下是myDatabaseContract类: package com.example.registerandlogingapp; import android.provider.BaseColumns; public c
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) {
}
}
以下是注册表活动:
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();
}
}
尝试此[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);
}}
你的意思是在运行应用程序后无法看到SQLite文件夹?@Brahma Datta是的,并且查询未实现,没有出现异常。你是否尝试将数据输入SQLite数据库?我看到没有将数据存储到数据库中的代码@穆罕默德