public void tt(View v){

Intent intent=new Intent();
//寻卡
String[] cardID = new String[1];
// 寻卡
if (hf.selectCard(1, cardID) < 0) {
Toast.makeText(MainActivity.this, "读卡失败,请重试!", Toast.LENGTH_SHORT).show();
return;
}

if(sqtt.query(DB_TABLE, new String[]{"STUDENTSCARD_id"}, "STUDENTSCARD_id=?", cardID
, null, null, null,null) != null)
{

intent.setClass(MainActivity.this,Dorm.class );
MainActivity.this.startActivity(intent);
}
else
{
Toast.makeText(MainActivity.this, "无用户",Toast.LENGTH_SHORT).show();
}

} public void zc(View v)
 {
 String[] cardID = new String[1];
if (hf.selectCard(1, cardID) < 0) {
Toast.makeText(MainActivity.this, "读卡失败,请重试!", Toast.LENGTH_SHORT).show();

}
 else{
 ContentValues cv=new ContentValues();
    hf.selectCard(1, cardID);
cv.put("STUDENTSCARD_id", Integer.parseInt(cardID[0]));
if(sqtt.insert(DB_TABLE, null, cv)>0)
{
Toast.makeText(MainActivity.this, "用户注册成功!", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(MainActivity.this, "用户注册失败!", Toast.LENGTH_SHORT).show();
    }
}
 }
方法tt和zc分别绑定了刷卡验证按钮和注册按钮
其中hf.selectCard()是读取高频读卡器上高频卡的卡号 如果得到了则cardID[0]为String类型的一个值表中的STUDENTSCARD_id字段设置的是int型求解我的查询和添加语句有什么错误?错误现象有2:1.选择zc 则程序直接崩溃2.点击刷卡验证则sqtt.query()不为空直接运行里面的代码:intent.setClass(MainActivity.this,Dorm.class );     MainActivity.this.startActivity(intent);  
数据库Java

解决方案 »

  1.   


    FC的log日志贴出来下STUDENTSCARD_id 如果是自增的  则插入是会有问题的   并且要确保DB_TABLE 中的字段都是可以为null
      

  2.   

    表中只有一个STUDENTSCARD_id字段
    mydata.sqlt="CREATE TABLE "+DB_TABLE+"(STUDENTSCARD_id INTEGER NOT NULL PRIMARY KEY);";

    sqtt=mydata.getWritableDatabase();
      

  3.   


    sqtt.query返回的是long类型  你判null 没什么用   要是否> 0另外建议数据表别以STUDENTSCARD_id为主键    直接多加以个自增主键 STUDENTSCARD_id为另一个字段