简单的一个数据登录的例子(数据库已经存在)大家看看代码?
这是登录按钮代码:public void onClick(View v) {
username = (EditText)findViewById(R.id.login_edit_account);
password = (EditText)findViewById(R.id.login_edit_pwd);
String name=username.getText().toString();
String pass=password.getText().toString();
Log.i("TAG",name+"_"+pass);
DatabaseHelper uService=new DatabaseHelper(Date.this);
boolean flag=uService.login(name, pass);
if(flag){
Log.i("TAG","登录成功");
Toast.makeText(Date.this, "登录成功", Toast.LENGTH_LONG).show();
}else{
Log.i("TAG","登录失败");
Toast.makeText(Date.this, "登录失败", Toast.LENGTH_LONG).show();
这是DatabaseHelper类的代码:
package android.sqlite;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import com.android.test.login.R;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log;
/**
* SQLiteOpenHelper是一个辅助类,用来管理数据库的创建和版本他,它提供两个方面的功能
* 第一,getReadableDatabase()、getWritableDatabase()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作
* 第二,提供了onCreate()、onUpgrade()两个回调函数,允许我们再创建和升级数据库时,进行自己的操作
*/
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int VERSION = 1;
private static final String DATABASE_PATH = null;
private static final String DATABASE_FILENAME = null;
private DatabaseHelper dbHelper;
static String name="user.db";
static int dbVersion=1;
public DatabaseHelper(Context context) {
super(context, name, null, dbVersion);
}
/**
* 在SQLiteOpenHelper的子类当中,必须有该构造函数
* @param context 上下文对象
* @param name 数据库名称
* @param factory
* @param version 当前数据库的版本,值必须是整数并且是递增的状态
*/
public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
//必须通过super调用父类当中的构造函数
super(context, name, factory, version);
}
public DatabaseHelper(Context context, String name, int version){
this(context,name,null,version);
}
public DatabaseHelper(Context context, String name){
this(context,name,VERSION);
}
//该函数是在第一次创建的时候执行,实际上是第一次得到SQLiteDatabase对象的时候才会调用这个方法
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println("create a database");
//execSQL用于执行SQL语句
db.execSQL("create table user(id int,name varchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
System.out.println("upgrade a database");
}
public static SQLiteDatabase openDatabase(Context context) {
try {
// 获得文件的绝对路径
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
if (!dir.exists()) {
dir.mkdir();
};
if (!(new File(databaseFilename)).exists()) {
InputStream is = context.getResources().openRawResource(R.raw.db);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[8192];
int count = 0;
// 开始复制文件
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);
return database;
} catch (Exception e) {
Log.i("open error", e.getMessage());
}
return null;
}
public boolean login(String username,String password){
SQLiteDatabase sdb=dbHelper.getReadableDatabase();
String sql="select * from admin where username=? and password=?";
Cursor cursor=sdb.rawQuery(sql, new String[]{username,password});
if(cursor.moveToFirst()==true){
cursor.close();
return true;
}
return false;
}
}
大家看看那里的问题? 新手 --------------------编程问答-------------------- 你都木有提出 出什么问题了,难道让大家给你一行一行看代码找bug?,而且,像登陆用户信息这些东西一般都是用SharedPreferences来做,写一个类专门存储这些数据量小的全局变量。 --------------------编程问答--------------------
LZ是不是想问为什么 账户、密码正确 日志却老显示Log.i("TAG","登录失败");
如果是:
1.请LZ查看数据是否正确的写到数据库中
2.密码使用的是否是明文 --------------------编程问答-------------------- 数据库是现成 db格式的 点击登录 程序自动自动退出 --------------------编程问答--------------------
请截取自动退出日志信息~ --------------------编程问答-------------------- 就是现有数据库db.db(不用创建) 有个表admin (username password) 登录的话 可以根据 输入的帐号和密码登录 判断 正确就登录 错误的话 就提示 就是实现这个效果即可 大家有好的方法也行 --------------------编程问答-------------------- 我看看 稍等
补充:移动开发 , Android