Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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 在将订单添加到数据库之前检查是否满足条件_Java_Android_Sqlite_Android Sqlite - Fatal编程技术网

Java 在将订单添加到数据库之前检查是否满足条件

Java 在将订单添加到数据库之前检查是否满足条件,java,android,sqlite,android-sqlite,Java,Android,Sqlite,Android Sqlite,我试图确保用户选择了一个服务员id(第一个if语句),并且该id是有效的,并且与数据库中的记录(else if语句)相关 我正在从一个数字(Android中的GUI文本)收集id,然后像这样选择Number值 EditText waiter_id; waiter_id = (EditText) findViewById(R.id.waiter_id); TextUtils.isEmpty(waterr\u id.getText()检查以确保输入了值,如果没有输入值,则显示消息 调用在Dat

我试图确保用户选择了一个服务员id(第一个if语句),并且该id是有效的,并且与数据库中的记录(else if语句)相关

我正在从一个
数字(Android中的GUI文本)
收集
id
,然后像这样选择
Number

 EditText waiter_id;
 waiter_id = (EditText) findViewById(R.id.waiter_id);
TextUtils.isEmpty(waterr\u id.getText()
检查以确保输入了值,如果没有输入值,则显示消息

调用在
DataBaseHelper isEmployee(String id)
类中创建的方法后,该方法使用用户输入的
id
在数据库中搜索该记录。如果在数据库中找不到该id,则应显示一条消息提醒用户

订单点击订单活动

order.setOnClickListener(new View.OnClickListener() {
            Order order;
            @Override
            public void onClick(View view) {
                if (TextUtils.isEmpty(waiter_id.getText())) {
                    Toast.makeText(OrderActivity.this, "Please select waiter id", Toast.LENGTH_SHORT).show();

                // This is where the method which returns the boolean is called using
                // the value in the Number field in xml file
                } else if (!dbHelp.isEmployee(String.valueOf(waiter_id))){
                    Toast.makeText(OrderActivity.this, "Id not valid", Toast.LENGTH_SHORT).show();
                }

              

        });
查询数据库DataBaseHelper类的方法

public Boolean isEmployee(String id){
    SQLiteDatabase db = this.getReadableDatabase();

    String findEmployeeUsingId = "SELECT * FROM " + EMP_TABLE +
            " WHERE " + ID_EMP + " = " + id;
    Cursor cursor = db.rawQuery(findEmployeeUsingId, null);


    if (cursor.getCount() == 0) {
        return false;
    }
    else
        return true;
}
我收到的错误消息是:

com.example.dropit E/SQLiteLog: (1) near ".": syntax error in "SELECT * FROM EMP_TABLE WHERE ID = androidx.appcompat.widget.AppCompatEditText{93d8cbb VFED..CL. .F...... 249,193-829,317 #7f08011f app:id/waiter_id aid=1073741824}"

android.database.sqlite.SQLiteException: near ".": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT * FROM EMP_TABLE WHERE ID = androidx.appcompat.widget.AppCompatEditText{93d8cbb VFED..CL. .F...... 249,193-829,317 #7f08011f app:id/waiter_id aid=1073741824}

    at com.example.dropit.DataBaseHelper.isEmployee(DataBaseHelper.java:283)
    at com.example.dropit.OrderActivity$1.onClick(OrderActivity.java:58)

waterr\u id
是一个
EditText
而不是字符串。
调用
isEmployee()
时,应传递其文本:

else if (!dbHelp.isEmployee(waiter_id.getText().toString()))
rawQuery()中使用
占位符,而不是串联参数:

String findEmployeeUsingId = "SELECT * FROM " + EMP_TABLE + " WHERE " + ID_EMP + " = ?";
Cursor cursor = db.rawQuery(findEmployeeUsingId, new String[] {id});

首先使用参数,然后调试what
String.valueOf(waterr_id))
returns请解释下一票,它返回一个
String
what String?。。。显然,在我调用DataBaseHelper isEmployee(String id)类中创建的方法(该类使用用户输入的id进行搜索)之后,这不是您想要的方法。这是不正确的。。。检查
int
参数的stringA
String
表示形式,这是我想要的,它是已输入int参数的字符串表示形式的用户id的数量否,它不是。。。请先调试您的程序谢谢我理解,因为
输入
类型是
数字
,所以它是
整数
,但感谢您澄清它实际上是
文本