/currentFolder/email/email.php
我认为这是我遇到问题的地方。应用程序似乎根本无法访问数据库,为了登录,我需要检查用户名是否与密码匹配。如果密码==用户名,那么它将允许用户登录。不幸的是,这没有发生。
package com.example.chris.thegiver;
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 LogIn extends AppCompatActivity implements View.OnClickListener {
private Button btnRegister2, btnLogIn;
private EditText etUser, etPass;
DatabaseHelper helper = new DatabaseHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_log_in);
btnRegister2 = (Button) findViewById(R.id.btnRegister2);
btnLogIn= (Button) findViewById(R.id.btnLogIn);
btnRegister2.setOnClickListener(this);
}
数据库类
@Override
public void onClick(View v) {
if(v.getId() == R.id.btnRegister2){
startActivity(new Intent(LogIn.this, RegisterActivity.class));
}
if(v.getId() == R.id.btnLogIn){
EditText a = (EditText) findViewById(R.id.etUser);
String str = a.getText().toString();
EditText b = (EditText) findViewById(R.id.etPass);
String pass = b.getText().toString();
String password = helper.searchPass(str);
if(pass.equals(password)){
Intent i = new Intent(LogIn.this,HomeActivity.class);
i.putExtra("Username: ", str);
startActivity(i);
}
else{
Toast temp = Toast.makeText(LogIn.this, "Username and Password dont match!", Toast.LENGTH_SHORT);
temp.show();
}
}
}
}
此方法为数据库提供功能,并在创建新用户对象时插入用户信息
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "contacts.db";
private static final String TABLE_NAME = "contacts";
private static final String COL_ID = "id";
private static final String COL_NAME= "name";
private static final String COL_EMAIL= "email";
private static final String COL_USERNAME= "username";
private static final String COL_PASSWORD= "password";
SQLiteDatabase db;
private static final String TABLE_CREATE = "create table contacts (id integer primary key not null, name text not null," +
"email text not null, username text not null, password text not null)";
public DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_CREATE);
this.db = db;
}
此方法可能出现问题,在数据库中搜索用户名并检查用户名是否等于密码。如果不是,那么b将被打印到屏幕
public void insertContact(Contact c){
db = this.getWritableDatabase();
ContentValues values = new ContentValues();
// * means all values
String query = "select * from contacts";
Cursor cursor = db.rawQuery(query,null);
int count = cursor.getCount();
values.put(COL_ID, count);
values.put(COL_NAME,c.getName());
values.put(COL_EMAIL, c.getEmail());
values.put(COL_USERNAME, c.getUsername());
values.put(COL_PASSWORD, c.getPassword());
**// this will insert the contact object into the database**
db.insert(TABLE_NAME, null, values);
db.close();
}
REGISTRATION CLASS这将向数据库发送所有用户名信息。
public String searchPass(String uname){
db = this.getReadableDatabase();
String query = "select uname, pass from" + TABLE_NAME;
Cursor cursor = db.rawQuery(query, null);
String a, b;
b = "not found";
if(cursor.moveToFirst()){
do{
//usernam
a = cursor.getString(0);
if(a.equals(uname)){
b = cursor.getString(1);
break;
}enter code here
}
while(cursor.moveToNext());
}
return b;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String query = "DROP TABLE IF EXISTS" + TABLE_NAME;
db.execSQL(query);
this.onCreate(db);
}
}
如果密码等于确认,则将所有内容存储在上面创建的java sqlite数据库中 如果密码和确认密码不匹配,则会显示一条密码消息,说明密码不匹配。
package com.example.chris.thegiver;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class RegisterActivity extends AppCompatActivity {
// calls the constructor of the DatabaseHelper class which will create the database and table
DatabaseHelper registerDB = new DatabaseHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
}
public void onRegisterClick(View v) {
if (v.getId() == R.id.btnReg) {
EditText etName = (EditText) findViewById(R.id.etName);
EditText etEmail = (EditText) findViewById(R.id.etEmail);
EditText etUsername = (EditText) findViewById(R.id.etUsername);
EditText etPassword = (EditText) findViewById(R.id.etPassword);
EditText etConfirm = (EditText) findViewById(R.id.etConfirm);
String name = etName.getText().toString();
String email = etEmail.getText().toString();
String user = etUsername.getText().toString();
String password = etPassword.getText().toString();
String confirm = etConfirm.getText().toString();
答案 0 :(得分:0)
Android通过使用此类直接提供SQLiteDatabase类,您可以从数据库访问数据,无需编写DatabaseHelper类
SQLiteDatabase db=openOrCreateDatabase("avishbarcodes.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
db.setLocale(Locale.getDefault());
像这样创建表..
String createtable="CREATE TABLE IF NOT EXISTS eannumbers(_id INTEGER PRIMARY KEY AUTOINCREMENT,count NUMBER,ean_no TEXT)";
db.execSQL(createtable);
像这样读取数据库中的值..
String selectquery= "select * from eannumbers";
Cursor c=db.rawQuery(selectquery, null);
if(c==null){
}else if(c.getCount()<=0){
}else{
while(c.moveToNext()){
String ean_no=c.getString(c.getColumnIndex("ean_no"));
}
c.close();
}
不要像这样访问列值..
cursor.getString(1);
按照这种方式更好的方式..
c.getString(c.getColumnIndex(&#34; ean_no&#34));
当用户点击登录按钮时,请按此检查
btn_login.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String selectquery= "select * from login";
Cursor c=db.rawQuery(selectquery, null);
if(c==null){
}else if(c.getCount()<=0){
}else{
while(c.moveToNext()){
String email=c.getString(c.getColumnIndex("emailid"));
String pwd=c.getString(c.getColumnIndex("pwd"));
}
c.close();
}
}
});
这样做..它会起作用......