android中的SQLite:即使将nullcolumnhack设置为null,也会输入空白行。为什么?

android中的SQLite:即使将nullcolumnhack设置为null,也会输入空白行。为什么?,android,android-sqlite,Android,Android Sqlite,这是我的dbAdapter类,它处理数据库中的数据输入 已在自定义dialogfragment中初始化该类对象。我正在插入一行的自定义对话框片段的按钮的onclick事件 如果我将edittext留空,然后执行onclick,它将插入一行。它不应该 请帮忙 public class dbAdapter{ dbHelper dbhelper; dbAdapter(Context context){ dbhelper = new dbHelper(context); } public lo

这是我的dbAdapter类,它处理数据库中的数据输入

已在自定义dialogfragment中初始化该类对象。我正在插入一行的自定义对话框片段的按钮的onclick事件

如果我将edittext留空,然后执行onclick,它将插入一行。它不应该

请帮忙

public class dbAdapter{
dbHelper dbhelper;
dbAdapter(Context context){
    dbhelper = new dbHelper(context);
}

public long insert(String name){
    SQLiteDatabase db = dbhelper.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(dbHelper.NAME,name);
    long id = db.insert(dbHelper.TABLE_NAME,null,values);
    db.close();
    return id;
}

public String getalldata(){
    SQLiteDatabase db = dbhelper.getWritableDatabase();
    String[] columns={dbhelper.UID,dbhelper.NAME};
    Cursor cursor = db.query(dbhelper.TABLE_NAME,columns,null,null,null,null,null);
    StringBuffer buffer=new StringBuffer();
    while (cursor.moveToNext()){
        int cid = cursor.getInt(0);
        String id=cursor.getString(1);
        buffer.append(cid+": "+id+"\n");
    }
    return buffer.toString();
}

static class dbHelper extends SQLiteOpenHelper{

    private static final String DATABASE_NAME = "geekslabstudios.db";
    private static final String TABLE_NAME="GEEKS";
    private static int DATABASE_VERSION =1;
    private static final String UID = "_id";
    private static final String NAME = "Name";
    private static final String CREATE_TABLE="CREATE TABLE "+TABLE_NAME+" ("+UID+" INTEGER PRIMARY KEY AUTOINCREMENT , "+NAME+" VARCHAR(255));";
    private static final String DROP_TABLE="DROP TABLE IF EXISTS "+TABLE_NAME;
    private Context context;
    public dbHelper(Context context) {
        super(context, DATABASE_NAME, null,DATABASE_VERSION);
        this.context=context;
        Toast.makeText(context,"dbAdapter Constructor Called",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //CREATE TABLE GEEKS (_id INTEGER PRIMARYKEY AUTOINCREMENT , Name VARCHAR(255));
        //CREATE TABLE TABLE_NAME (COLUMN_1_NAME INTEGER PRIMARYKEY AUTOINCREMENT , COLUMN_2_NAME DATA_TYPE);
        try{
            db.execSQL(CREATE_TABLE);
            Toast.makeText(context,"On Create Called",Toast.LENGTH_SHORT).show();
        }catch (SQLiteException e){
            e.printStackTrace();
            Toast.makeText(context,""+e,Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        try {
            Toast.makeText(context,"On Upgrade Called",Toast.LENGTH_SHORT).show();
            db.execSQL(DROP_TABLE);
            onCreate(db);
        }
        catch (SQLiteException e){
            e.printStackTrace();
            Toast.makeText(context,""+e,Toast.LENGTH_SHORT).show();
        }
    }
}
}


我错过什么了吗?请提供帮助。

单击按钮后,检查编辑文本是否为空。 如果是,请告诉用户填写所有字段,否则可以继续插入行


您也可以尝试在创建表时使用“NOTNULL”命令,以确保没有插入空值,但我认为我提到的第一个选项是必不可少的。

因此,我终于找到了合法的解决方案

我会像这样将edittext中的值放入数据库:

String name=username_EditText.getText().toString().trim();

long id = adapter.insert(name);

       if(id<0){
             Toast.makeText(getActivity(),"Unsuccessfull",Toast.LENGTH_SHORT).show();
               }
           else{
                 Toast.makeText(getActivity(),"YAY!!! Inserted a 
                 SQlite row."+name,Toast.LENGTH_SHORT).show();
               }

这对我来说很好。顺便说一句,谢谢大家:)

我们不是魔术师,我们可以在您的代码中找到错误并向您展示解决方案!也发布一些代码!等等,我会编辑问题,只是从android应用程序测试/发布。但是你不认为你的这些测试/检查工作浪费了其他人的时间吗?@PareshMayani抱歉,我已经编辑了问题,请帮助我。
  public long insert(String name){
    long id;
    SQLiteDatabase db = dbhelper.getWritableDatabase();
    ContentValues values = new ContentValues();
    if(name.equals("")){
       id=-1;
    }
    else{
        values.put(dbHelper.NAME,name);
        id = db.insert(dbHelper.TABLE_NAME,null,values);
        db.close();
    }
    return id;
}