【问题标题】:How to avoid storing null values in sqlite using android如何避免使用android在sqlite中存储空值
【发布时间】:2014-10-02 17:52:07
【问题描述】:

如果我单击添加按钮,则值必须存储在 sqLite 数据库中。 我的问题是它也存储了空值 如何避免那个? 朋友们帮帮我

//creating database and table

    public class Database extends SQLiteOpenHelper {
            static int dbversion=1;
            static String dbname="expense.db";

            public Database(Context context)
                     {
                super(context, dbname, null, dbversion);
                // TODO Auto-generated constructor stub
            }

            @Override
            public void onCreate(SQLiteDatabase db) {
                db.execSQL("create table addsource(source text)");


//inserting values in database

    add.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub

                        Database db=new Database(Sett.this);
                        SQLiteDatabase sb=db.getReadableDatabase(); 

                        sb.execSQL("insert into addsource(source)values('"+sources.getText()+"')");
                        Toast.makeText(getApplicationContext(), "Registered Successfully",Toast.LENGTH_SHORT).show();

                    }
                });

            }

【问题讨论】:

  • 此代码从不插入 NULL 值。它可能会插入一个空字符串。是你想避免的吗?
  • 是的,我想避免空字符串
  • sources包含一个空字符串会发生什么?

标签: android database sqlite insert null


【解决方案1】:

你有 3 种方式:

1- 在创建表中添加 NOT NULL :

CREATE TABLE your_table ( column_name INT NOT NULL, ....)

2- 在使用 SELECT 时选择不为空的值:

SELECT column_name FROM your_table WHERE column_name IS NOT NULL

3-检查变量值是否为空:

if ( String.ValueOf(source) != null){   // for string example
      // add the source to the database
}

【讨论】:

    【解决方案2】:

    您可以在插入数据库之前检查值。将值放入字符串并在单击添加按钮时检查字符串不为空,然后插入表中。

    你也可以在创建表时使用'not null'

    Creating table in sqlite android

    【讨论】:

    • 感谢回复,问题依旧
    【解决方案3】:

    你为什么不测试值?

    if(sources != null){
        sb.execSQL("insert into addsource(source)values('"+sources.getText()+"')");
    }
    else{ 
        //insert what you want
    }
    

    此外,我不认为你可以插入空值,你可能只插入一个空字符串:

    sources.getText()
    

    因此,您可以测试 sources.getText().length > 0,而不是 sources != null,然后插入您想要的内容,以防万一。

    【讨论】:

    • 感谢回复,问题依旧
    猜你喜欢
    • 1970-01-01
    • 2011-01-30
    • 2023-02-20
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多