当前位置: 首页 > 知识库问答 >
问题:

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

杨俊茂
2023-03-14

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

我正在从一个数字(Android中的GUI文本)中收集ID,并选择number值,如下所示

 EditText waiter_id;
 waiter_id = (EditText) findViewById(R.id.waiter_id);

textUtils.isEmpty(WAITER_ID.getText()检查以确保输入了一个值,并显示一条消息,如果没有,则此操作正常。

之后,我调用了在DatabaseHelper isEmployee(String id)类中创建的方法,该方法使用用户输入的id在数据库中搜索该记录。如果在数据库中找不到id,则会出现一条消息来警告用户。

Order onClick OrderActivity

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)

共有1个答案

武卓
2023-03-14

WAITER_IDEditText,而不是字符串。
调用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});
 类似资料:
  • 我试图通过将每个数字添加到整数列表来将输入的数字拆分为其数字。我必须输入一个非整数,以阻止扫描仪寻找更多的整数。但是,当我输入一个非整数时,我总是得到这个错误: 我知道这是因为我期望一个int,但得到另一种类型的输入,但我不知道为什么会这样。不应该阻止这种情况发生吗? 编辑:抱歉,我忘记指定注释掉的行是导致问题的行。

  • 我正在为WooCommerce开发一个插件。我想覆盖admin的订单详细信息模板。我已经阅读了关于https://www.skyverge.com/blog/override-woocommerce-template-file-within-a-plugin/,但我仍然不明白如何覆盖admin的订单详细信息模板。以下是我的代码: 它不会在订单详细信息之后调用与

  • 我正在将行插入房间数据库,我想检查该行是否已成功插入。 这是我的刀 当我插入一行时,响应为1、2、3,依此类推。。所以它返回的是(是这样吗?) 因此,需要检查行是否正确插入。 我是否可以检查插入的rowId是否大于0,然后将其成功插入数据库。 注意:我得到的结果是1,2,3等,应该是rowId。 请建议这种方法是否正确?基本上,如果插入不成功,我想阻止用户继续 谢谢你的建议和意见

  • 问题内容: 我有一个正在创建的字符串,并且需要向该字符串添加多个“ \ 0”(空)字符。在每个空字符之间是其他文本数据(仅ASCII字母数字字符)。 我的问题是,在J2SE中,当您添加第一个null(\ 0)时,java似乎确定它是一个字符串终止符(类似于C ++),并且忽略了所有附加的数据。不引发错误,尾随的数据将被忽略。我需要在字符串中的null后强制添加其他尾随数据。我必须对我支持的旧数据库

  • 我正在使用PHP、HTML5和JavaScript。 我正在制作一个网页(将链接到数据库)。我试图检查标签中是否有输入,这是可行的,但当点击按钮时,即使标签中没有输入,它也会转到下一页并发送数据。 在输入所有标签之前,您应该一直停留在页面上。它还提供了一条有效的错误消息。 我是否可以在javascript中插入一些内容,以便它转到下一页并发送数据(如method=“GET”) 我以前从来没有将数据

  • 我目前正在成功地向我的WooCommerce产品页面添加一个字段,该字段显示以下值: 在推车(前端), 在结账页面(前端), 在订单页(前端), 并在管理个人订单页面(后端)。 问题是:它在管理订单的“自定义字段”元框中没有显示为自定义字段,其值在其中,而只是在订单页面中显示为文本。 这是我的工作代码: 我认为这是代码的最后一点需要更改。它当前显示订单项下的文本,因此我可能需要调整? 我什么都试过

  • 你好,我正在练习使用C++中的二维数组,我的问题是,例如,如果我想检查4是否有0或11在北,东,南,西作为邻居,它应该返回false。这是我的if 现在我的问题是,由于4的西面和4的北面都超出了界限,它将永远不会返回false。如何优化if条件使其返回false?这是我的二维阵列

  • 我有两个表,sr_leagures和sr_programs。SR_Programs与sr_leagues有一对多的关系。 我有以下使用实体框架的代码: 那么这就是我要问的部分: 然后关闭DB上下文 这是否会两次将实体添加到数据库中?一旦附加到并添加到表? 或者EF会因为两者的关系而知道自己是同一个实体吗?