gpt4 book ai didi

java - 我看不到数据,也看不到我创建的 sqlite 表

转载 作者:搜寻专家 更新时间:2023-10-30 23:28:39 25 4
gpt4 key购买 nike

我无法将数据插入 SQLite,也看不到我的表。我尝试在 DB Browser for SQLite 中查看表格,但我看不到任何插入的内容,也看不到我创建的行。

数据库助手:

公共(public)类 DatabaseHelper 扩展了 SQLiteOpenHelper {

// Database Version
public static final int DATABASE_VERSION = 1;
// Database Name
public static final String DATABASE_NAME = "traineeInfo";
// Contacts table name
public static final String TABLE_NAME = "trainee";
// Trainee Table Columns names
public static final String COL_ID = "ID";
public static final String COL_USERNAME = "USERNAME";
public static final String COL_NAME = "NAME";
public static final String COL_PASS = "PASSWORD";
public static final String COL_EMAIL = "EMAIL";
SQLiteDatabase db;

//DataBase Helper
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

//onCreat
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE = "create table contacts (id integer primary key not null ," +
" username text not null, name text not null, email text not null,password text not null );";

db.execSQL(CREATE_CONTACTS_TABLE);
this.db = db;
}

//onUpgrade
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
// Creating tables again
this.onCreate(db);
}

//Adding new trainee
public void addTrainee(Trainee trainee) {
SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();

int count = getTraineeCount();

values.put(COL_ID, count);
values.put(COL_USERNAME, trainee.getUsername());
values.put(COL_NAME, trainee.getName());
values.put(COL_PASS, trainee.getPassword());
values.put(COL_EMAIL, trainee.getEmail());

// Inserting Row
db.insert(TABLE_NAME, null, values);
db.close();// Closing database connection
}


//Check the match beetwen user data and database
public String searchPassword(String username) {

//Read data from dataBase
db = this.getReadableDatabase();



// Getting trainee Count
public int getTraineeCount() {
String countQuery = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
cursor.close();
// return count
return cursor.getCount();
}

注册JuinUs类:

公共(public)类 JoinUs 扩展了 AppCompatActivity {

private static final Pattern PASSWORD_PATTERN =
Pattern.compile("^" +
"(?=.*[a-zA-Z])" + //any letter
"(?=\\S+$)" + //no white spaces
".{4,}" + //at least 4 characters
"$");

//The database helper.
DatabaseHelper myDb;


private TextInputLayout textInputUsername;
private TextInputLayout textInputEmail;
private TextInputLayout textInputName;
private TextInputLayout textInputPassword;
private TextInputLayout textInputConfirmPassword;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_join_us);

//Creat the databas.
myDb = new DatabaseHelper(this);

textInputUsername = findViewById(R.id.etUserName);
textInputName = findViewById(R.id.etName);
textInputEmail = findViewById(R.id.etEmail);
textInputPassword = findViewById(R.id.etPassword);
textInputConfirmPassword = findViewById(R.id.etConfirmPassword);

TextView tvLogin = (TextView) findViewById(R.id.tvLogin);

//onClick on text view juin us for register activity.
tvLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(JoinUs.this,Login.class);
startActivity(intent);
finish();
}
});
}


public void confirminput(View v) {
//If one of the validate retuen false the validation faild.
if ( !validateEmail() || !validateUsername() || !validateName() || !validatePassword()) {
Toast.makeText(getApplicationContext(), " Validation NOT OK", Toast.LENGTH_LONG).show();
return;
}

//Inserting Trainee.
Trainee trainee = new Trainee();
trainee.setUsername( textInputUsername.getEditText().getText().toString().trim());
trainee.setName(textInputName.getEditText().getText().toString().trim());
trainee.setEmail(textInputEmail.getEditText().getText().toString().trim());
trainee.setPassword(textInputPassword.getEditText().getText().toString().trim());

//Insert Method data .
myDb.addTrainee(trainee);


}


//Validate User name.
private boolean validateUsername() {
String usernameInput = textInputUsername.getEditText().getText().toString().trim();

if (usernameInput.isEmpty()) {
textInputUsername.setError("Field can't be empty");
return false;
} else if (usernameInput.length() > 15) {
textInputUsername.setError("Username too long");
return false;
} else {
textInputUsername.setError(null);
return true;
}
}

//Validate Email
private boolean validateEmail() {
String emailInput = textInputEmail.getEditText().getText().toString().trim();

/*Check if email already exist
if (checkIfExists(emailInput)) {
textInputEmail.setError("Email already exist");
return false;
}else*/
if (emailInput.isEmpty()) {
textInputEmail.setError("Field can't be empty");
return false;
} else if (!Patterns.EMAIL_ADDRESS.matcher(emailInput).matches()) {
textInputEmail.setError("Please enter a valid email address");
return false;
} else {
textInputEmail.setError(null);
return true;
}
}

//Validate Name
private boolean validateName() {
String firstnameInput = textInputName.getEditText().getText().toString().trim();

if (firstnameInput.isEmpty()) {
textInputName.setError("Field can't be empty");
return false;
} else if (firstnameInput.length() > 15) {
textInputName.setError("Username too long");
return false;
} else {
textInputName.setError(null);
return true;
}
}

//Validate Password
private boolean validatePassword() {
String passwordInput = textInputPassword.getEditText().getText().toString().trim();
String confirmPasswordInput = textInputConfirmPassword.getEditText().getText().toString().trim();

//Check if password & confirm password match
if (passwordInput.equals(confirmPasswordInput)) {

if (passwordInput.length() < 4) {
textInputPassword.setError("Password must contain 4 characters");
return false;
}else if (passwordInput.contains(" ")) {
textInputPassword.setError("No Spaces Allowed");
return false;
}else if (!PASSWORD_PATTERN.matcher(passwordInput).matches()) {
textInputPassword.setError("Password must contain any letter");
return false;
}else if (confirmPasswordInput.length() < 4) {
textInputConfirmPassword.setError("Password must contain 4 characters");
return false;
}else if (confirmPasswordInput.contains(" ")) {
textInputConfirmPassword.setError("No Spaces Allowed");
return false;
}else if (confirmPasswordInput.isEmpty()) {
textInputConfirmPassword.setError("Field can't be empty");
return false;
}else if (!PASSWORD_PATTERN.matcher(confirmPasswordInput).matches()) {
textInputConfirmPassword.setError("Password must contain any letter");
return false;
}else {
textInputConfirmPassword.setError(null);
textInputPassword.setError(null);
return true;
}
}else {
textInputConfirmPassword.setError("Password don't match!");
return false;
}

}

最佳答案

您正在尝试向一个不存在的表添加条目,因为您没有在 DatabaseHelperonCreate 方法中创建正确的表> 类(class)(联系人!= 实习生)。

所以改变这个:

@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE = "create table contacts (id integer primary key not null ," +
" username text not null, name text not null, email text not null,password text not null );";

db.execSQL(CREATE_CONTACTS_TABLE);
this.db = db;
}

到:

@Override
public void onCreate(SQLiteDatabase db) {
String createTraineeTable = "create table trainee (id integer primary key not null ," +
" username text not null, name text not null, email text not null,password text not null );";

db.execSQL(createTraineeTable);
this.db = db;
}

此外,我建议您格式化字符串并使用您定义的常量来防止出现此类错误。例如:

String createTraineeTable = String.format("create table %s (%s integer primary key not null, %s text not null, %s text not null, %s text not null, %s text not null", TABLE_NAME , COL_ID, COL_USERNAME, COL_NAME, COL_PASS, COL_EMAIL);

关于java - 我看不到数据,也看不到我创建的 sqlite 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52586045/

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