Android / Java:我的代码是否正确?

时间:2013-12-23 17:00:11

标签: java android

我正在尝试创建一个简单的登录系统。这是数据库类中的男女同校。我的方法是否正确?如果用户名和密码都正确,它应该返回true,如果数据库中的任何一个是错误的(未注册),它应该返回false?有没有更简单的方法来编写这种方法?

public boolean getAccount(String name, String password) {
                int test = 0;
                database = getReadableDatabase();
                String sql = "SELECT * FROM tbl_account WHERE username='name' AND password='password'";
                Cursor c = database.rawQuery(sql, null);
                if (c.moveToFirst()) {
                        do {
                                if (c.getString(0).isEmpty()) {
                                        test = 0;
                                }
                                else if (c.getString(0).isEmpty() == false) {
                                        if (name.equals(c.getString(0))) {
                                                if (c.getString(1).isEmpty()) {
                                                        test = 0;
                                                }
                                                else if (password.equals(c.getString(1))) {
                                                        test = 1;
                                                }
                                        }
                                }
                        } while (c.moveToNext());
                }

                if (test == 0) {
                        return false;
                } else {
                        return true;
                }

        }

2 个答案:

答案 0 :(得分:3)

最佳做法是使用?具有选择参数的占位符,您可以:

String sql = "SELECT * FROM tbl_account WHERE username = ? AND password = ?";
Cursor c = database.rawQuery(sql, new String[] {name, password});

这可以避免问题,其中参数本身包含引号和撇号等字符,否则会破坏构造的SQL字符串。

答案 1 :(得分:0)

我认为你的sql应该是:

String sql = "SELECT * FROM tbl_account WHERE username='" + name + 
    "' AND password='" + password + "'";

试试这个sql。希望它会有所帮助。