//数据库文件:存放用户账号、密码。public class MyDBHelper extends SQLiteOpenHelper {  public static final String CREATE_USERDATA="create table userData(" +
            "id integer primary key autoincrement,"
            +"account,"
            +"password)";
/* public static final String CREATE_STOCK="create table userData(" +
            "id integer primary key autoincrement,"
            +"type,"
            +"price,"
            +"number)";*/     private Context mContext;     public MyDBHelper(Context context, String name, SQLiteDatabase.CursorFactory cursorFactory,int version){
        super(context,name,cursorFactory,version);
        mContext=context;
    }     public  void onCreate(SQLiteDatabase db){
        db.execSQL(CREATE_USERDATA);
    }     public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
        //onCreate(db);
    }
}//登录界面
public class MainActivity extends Activity {
    private MyDBHelper dbHelper;
    private EditText username,password;    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        
        Button Register=(Button) findViewById (R.id.register);
        Button Login=(Button) findViewById (R.id.login);
        Button Forgive_pwd=(Button) findViewById (R.id.forgive_pwd);
        
        dbHelper = new MyDBHelper(this,"UserStore.db",null,1);
    
   
    Register.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
      //点击注册按钮进入注册页面
//Toast.makeText(MainActivity.this, "fghjkhv", Toast.LENGTH_SHORT).show();
           Intent intent = new Intent(MainActivity.this,RegisterAvtivity.class);
           startActivity(intent);
        }
    });    //点击登录按钮
    Login.setOnClickListener(new OnClickListener(){
     @Override
     public void onClick(View v) {
     username=(EditText)findViewById(R.id.et1);
            password=(EditText)findViewById(R.id.et2);
            String userName=username.getText().toString();
            String passWord=password.getText().toString();
            
            if (login(userName,passWord)) {
             Intent intent = new Intent(MainActivity.this,ThirdActivity.class);
                startActivity(intent);
            }
            else {
                Toast.makeText(MainActivity.this, "登陆失败", Toast.LENGTH_SHORT).show();
            }
           }
       });
       }
  
    //验证登录
    public boolean login(String username,String password) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        String sql = "select * from userData where account=? and password=?";
        Cursor cursor = db.rawQuery(sql, new String[] {username, password});
        if (cursor.moveToFirst()) {
            cursor.close();
            return true;
        }
        return false;
    }
}//注册界面:public class RegisterAvtivity extends Activity { private MyDBHelper dbHelper;
public EditText Et3,Et4;    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);        dbHelper = new MyDBHelper(this,"UserStore.db",null,1);
        Button createDatabase = (Button) findViewById(R.id.login);
        createDatabase.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase(); //获取SQLiteDatabase对象
ContentValues values = new ContentValues();  //用ContentValues对要添加的数据组装
// 开始组装数据
String newname = Et3.getText().toString();
String password= Et4.getText().toString();
if (CheckIsDataAlreadyInDBorNot(newname)) 
{
            Toast.makeText(RegisterAvtivity.this,"该用户名已被注册,注册失败",Toast.LENGTH_SHORT).show();
        }
        else {
            String sql = "insert into userData(account,password) value(?,?)";
            Object obj[]={newname,password};
            db.execSQL(sql,obj);
         values.put("account", newname);  //列名和要添加的数据,id列已设置为自动添加,可以自动生成
values.put("password", password);
db.insert("userData",null,values); // 插入第一条数据
db.close();
            Toast.makeText(RegisterAvtivity.this, "注册成功", Toast.LENGTH_SHORT).show();
            
        }
}
});
    }  
//检验用户名是否已存在
    public boolean CheckIsDataAlreadyInDBorNot(String value){
    
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        String Query = "Select * from userData where account =?";
        Cursor cursor = db.rawQuery(Query,new String[] { value });
        if (cursor.getCount()>0){
            cursor.close();
            return  true;
        }
        cursor.close();
        return false;
    }
}
[/code]

解决方案 »

  1.   

     public static final String CREATE_USERDATA="create table userData(" +
                "id integer primary key autoincrement,"
                +"account,"
                +"password)";你建表的时候不给account,password这两个字段指定类型的么举个例子:
    // 创建表,自增_id,频率,增益
    @Override
    public void onCreate(SQLiteDatabase db) {// 初次生成数据库时才会被调用
    db.execSQL("CREATE TABLE IF NOT EXISTS " + table_name
    + " (" // 创建详细信息数据库表
    + "_id integer primary key autoincrement,"
    + "start TEXT,end TEXT" + ");"); }
    我的start,end 这两个字段是TEXT类型的 ,_id 和你的一样是integer 类型的