这是登录按钮代码: 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;
}
}大家看看那里的问题? 新手 

解决方案 »

  1.   

    你都木有提出 出什么问题了,难道让大家给你一行一行看代码找bug?,而且,像登陆用户信息这些东西一般都是用SharedPreferences来做,写一个类专门存储这些数据量小的全局变量。
      

  2.   


    LZ是不是想问为什么  账户、密码正确   日志却老显示Log.i("TAG","登录失败");如果是:
     
    1.请LZ查看数据是否正确的写到数据库中
    2.密码使用的是否是明文
      

  3.   

    就是现有数据库db.db(不用创建) 有个表admin (username password)  登录的话 可以根据 输入的帐号和密码登录 判断 正确就登录 错误的话 就提示 就是实现这个效果即可 大家有好的方法也行