Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t在android中将数据插入sqlite_Java_Android_Sqlite - Fatal编程技术网

Java Can';t在android中将数据插入sqlite

Java Can';t在android中将数据插入sqlite,java,android,sqlite,Java,Android,Sqlite,我尝试将EditView中的数据插入Sqlite,但它无法插入,然后关闭程序。如果我没有在所有编辑文本中输入任何值,则我的条件代码有效。填充所有字段并单击“按钮插入”后,它就不起作用了。我的插入代码有错误吗 下面是我的java代码 public class FormPage extends AppCompatActivity implements View.OnClickListener { public EditText KhId, Fname, Lname, sex, dob, addre

我尝试将EditView中的数据插入Sqlite,但它无法插入,然后关闭程序。如果我没有在所有编辑文本中输入任何值,则我的条件代码有效。填充所有字段并单击“按钮插入”后,它就不起作用了。我的插入代码有错误吗

下面是我的java代码

public class FormPage extends AppCompatActivity implements View.OnClickListener {

public EditText KhId, Fname, Lname, sex, dob, address;
private Button btnadd, btnview, btnupdate;
SQLiteDatabase db;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.form_page);

    KhId = (EditText)findViewById(R.id.editText);
    Fname = (EditText)findViewById(R.id.editText2);
    Lname = (EditText)findViewById(R.id.editText3);
    sex = (EditText)findViewById(R.id.editText4);
    dob = (EditText)findViewById(R.id.editText5);
    address = (EditText)findViewById(R.id.editText6);
    btnadd = (Button)findViewById(R.id.button5);
    btnview = (Button)findViewById(R.id.button6);
    btnupdate = (Button)findViewById(R.id.button7);

    btnadd.setOnClickListener(this);
    btnview.setOnClickListener(this);
    btnupdate.setOnClickListener(this);

    db = openOrCreateDatabase("UserInfo", Context.MODE_PRIVATE, null);
    db.execSQL("CREATE TABLE IF NOT EXISTS user(kh_id int primary key, fname varchar, lname varchar, sex varchar, dob date, address varchar)");
}

public void onClick(View view){
    if (view == btnadd) {
        if (KhId.getText().toString().equals("0")) {
            showMessage("Error", "Zero is invalid for" + " input to database");
        } else {
            if (KhId.getText().toString().equals("") || Fname.getText().toString().equals("") || Lname.getText().toString().equals("") ||
                    sex.getText().toString().equals("") || dob.getText().toString().equals("") || address.getText().toString().equals("")) {
                showMessage("Error", "Please enter all values");
                return;
            }
            Cursor c = db.rawQuery("Select kh_id From user " + "where kh_id='" +
                    KhId.getText().toString() + "'", null);

            if (c.moveToFirst()) {
                showMessage("Error", "Record already exists");
                clearText();
            } else {
                db.execSQL("INSERT INTO user VALUES(" + KhId.getText() + ",'" + Fname.getText() + "','" + Lname.getText()+"','"+ sex.getText()+"','"+
                        dob.getText() + "'," + address.getText() + ");");
                showMessage("Successful", "Record added");
                clearText();
            }
        }
    }
}
 private void showMessage(String title, String msg) {
  // code
 } 
 public void Clear() {
  // code
 } 
可以使用类将数据插入表中。这也将防止

您还需要在
SQLiteDatabase
中使用

ContentValues values = new ContentValues();
values.put(COL_2, KhId.getText().toString());
values.put(COL_3, Fname.getText().toString());
values.put(COL_4, Lname.getText().toString());
values.put(COL_5, sex.getText().toString());
values.put(COL_6, dob.getText().toString());
values.put(COL_7, address.getText().toString());

long res = db.insert(TABLE_NAME, null, values);

最后,请记住使用正确的方法。

当您尝试插入时,日志中是否有任何错误?如果您不喜欢,我将提供一个好的解决方案,如果您愿意的话?而且在insert查询中不只写gettext写gettext。tostring@kevanaghera请在获取值gettext.tostring()时,首先尝试插入查询写入。如果可以的话。你需要改变更多的事情。现在,您的代码只是想通过某种方式完成工作。我猜你关注了SimpledCodeing网站。但它没有合适的架构。理想情况下,所有DB操作都应该放在一个helper类中,每个操作都有不同的方法。然后你可以从你的活动中调用helper类,并将数据传递给insert
“Some string”+Some variable
自动调用
toString()
@code peedient是的,这是字符串连接知道..我正在编辑..这绝对是一个比你以前的答案更好的建议。我不确定它是否能解决原来的问题。@PhearumChheang删除这一行:
db.execSQL(“插入到用户值(“+KhId.getText()+”,“+Fname.getText()+”,“+Lname.getText()+”,“+sex.getText()+”,“+dob.getText()+”,“+address.getText()+”并添加我的解决方案更改
表名
列2
列3
等以与表名和列匹配。请尝试描述您的解决方案,而不仅仅是添加代码
db.execSQL("INSERT INTO user VALUES(" + KhId.getText().tostring()+ ",'" + Fname.getText().tostring() + "','" + Lname.getText().tostring()+"','"+ sex.getText().tostring()+"','"+
                        dob.getText().tostring() + "'," + address.getText().tostring() + ");");