- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我无法将数据插入 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;
}
}
最佳答案
您正在尝试向一个不存在的表添加条目,因为您没有在 DatabaseHelper
的 onCreate
方法中创建正确的表> 类(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/
初学者 android 问题。好的,我已经成功写入文件。例如。 //获取文件名 String filename = getResources().getString(R.string.filename
我已经将相同的图像保存到/data/data/mypackage/img/中,现在我想显示这个全屏,我曾尝试使用 ACTION_VIEW 来显示 android 标准程序,但它不是从/data/dat
我正在使用Xcode 9,Swift 4。 我正在尝试使用以下代码从URL在ImageView中显示图像: func getImageFromUrl(sourceUrl: String) -> UII
我的 Ubuntu 安装 genymotion 有问题。主要是我无法调试我的数据库,因为通过 eclipse 中的 DBMS 和 shell 中的 adb 我无法查看/data/文件夹的内容。没有显示
我正在尝试用 PHP 发布一些 JSON 数据。但是出了点问题。 这是我的 html -- {% for x in sets %}
我观察到两种方法的结果不同。为什么是这样?我知道 lm 上发生了什么,但无法弄清楚 tslm 上发生了什么。 > library(forecast) > set.seed(2) > tts lm(t
我不确定为什么会这样!我有一个由 spring data elasticsearch 和 spring data jpa 使用的类,但是当我尝试运行我的应用程序时出现错误。 Error creatin
在 this vega 图表,如果我下载并转换 flare-dependencies.json使用以下 jq 到 csv命令, jq -r '(map(keys) | add | unique) as
我正在提交一个项目,我必须在其中创建一个带有表的 mysql 数据库。一切都在我这边进行,所以我只想检查如何将我所有的压缩文件发送给使用不同计算机的人。基本上,我如何为另一台计算机创建我的数据库文件,
我有一个应用程序可以将文本文件写入内部存储。我想仔细看看我的电脑。 我运行了 Toast.makeText 来显示路径,它说:/数据/数据/我的包 但是当我转到 Android Studio 的 An
我喜欢使用 Genymotion 模拟器以如此出色的速度加载 Android。它有非常好的速度,但仍然有一些不稳定的性能。 如何从 Eclipse 中的文件资源管理器访问 Genymotion 模拟器
我需要更改 Silverlight 中文本框的格式。数据通过 MVVM 绑定(bind)。 例如,有一个 int 属性,我将 1 添加到 setter 中的值并调用 OnPropertyChanged
我想向 Youtube Data API 提出请求,但我不需要访问任何用户信息。我只想浏览公共(public)视频并根据搜索词显示视频。 我可以在未经授权的情况下这样做吗? 最佳答案 YouTube
我已经设置了一个 Twilio 应用程序,我想向人们发送更新,但我不想回复单个文本。我只是想让他们在有问题时打电话。我一切正常,但我想在发送文本时显示传入文本,以确保我不会错过任何问题。我正在使用 p
我有一个带有表单的网站(目前它是纯 HTML,但我们正在切换到 JQuery)。流程是这样的: 接受用户的输入 --- 5 个整数 通过 REST 调用网络服务 在服务器端运行一些计算...并生成一个
假设我们有一个名为 configuration.js 的文件,当我们查看内部时,我们会看到: 'use strict'; var profile = { "project": "%Projec
这部分是对 Previous Question 的扩展我的: 我现在可以从我的 CI Controller 成功返回 JSON 数据,它返回: {"results":[{"id":"1","Sourc
有什么有效的方法可以删除 ios 中 CBL 的所有文档存储?我对此有疑问,或者,如果有人知道如何从本质上使该应用程序像刚刚安装一样,那也会非常有帮助。我们正在努力确保我们的注销实际上将应用程序设置为
我有一个 Rails 应用程序,它与其他 Rails 应用程序通信以进行数据插入。我使用 jQuery $.post 方法进行数据插入。对于插入,我的其他 Rails 应用程序显示 200 OK。但在
我正在为服务于发布请求的 API 调用运行单元测试。我正在传递请求正文,并且必须将响应作为帐户数据返回。但我只收到断言错误 注意:数据是从 Azure 中获取的 spec.js const accou
我是一名优秀的程序员,十分优秀!