在SQL和ASP中使用where where语句

时间:2016-09-20 19:44:16

标签: sql asp.net ms-access

我对如何在我的asp中使用我的sql语句中的TWO而感到遗憾。 我试图获取先前输入的用户ID和密码,并将其与我在SQL上创建的数据库中的内容进行比较:

我认为我的问题来自于我的双引号和单引号。 UserID是我的数据库中的数字,密码是一个简短的文本。

var mycon = new ActiveXObject("ADODB.Connection");
var myrec = new ActiveXObject("ADODB.Recordset"); 
mycon.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\Omnivox.mdb"); 
var txtpassword = Request.QueryString("txtpassword");
var txtuserID = parseInt (Request.QueryString("txtuserID"));
var sql;
sql = "SELECT UserID, UserPassword FROM UserOmnivox WHERE UserID=" +txtuserID+ " AND UserPassword='" + txtpassword + "';";    
myrec.Open(sql, mycon);  

谢谢

更新:它仍然无效。错误按摩是:没有为myrec.Open(sql,mycon)行提供一个或多个必需参数的值

3 个答案:

答案 0 :(得分:2)

更改

sql = "SELECT * FROM UserOmnivox WHERE UserID=" +txtuserID "AND UserPassword="'+txtpassword';

sql = "SELECT * FROM UserOmnivox WHERE UserID=" +txtuserID + " AND UserPassword='"+txtpassword+"'";

答案 1 :(得分:1)

如果您进行了任何类型的基本调试,例如查看您正在生成的查询字符串,您就会看到:

sql = "SELECT [..snip..] UserID=" +txtuserID "AND UserPassword="'+txtpassword
                                             ^^--- no space
                                              ^--- missing +

产生

SELECT .... UserID=1234AND userPassword
                      ^^---syntax error, no such field '1234AND'

然后,是的,你的报价也错了

sql = "SELECT ... UserID=" +txtuserID "AND UserPassword="'+txtpassword
      ^------------------^-- one string
                                      ^-----------------^-- another string
                                                         ^---???

应该是

sql = "SELECT * FROM UserOmnivox WHERE UserID=" +txtuserID + " AND UserPassword='" + txtpassword + "';";

答案 2 :(得分:0)

我发现另一种更灵活的解决方案更好。有时根据条件你有一个条件,在其他条件你有零,而在其他条件你有两个。如果你走这条路,他们就不能解决这个问题。以下是......

Some sql query
where 1=1  -- ## A condition that will always be true and does nothing to your query. 
and first optional where clause
and second optional where clause

这样一来,如果你在某一特定情况下没有第一个where子句,但你确实拥有第二个,那么你就不会错过"其中"。你总是有地方,你可以选择添加任何数组"和"部分到你的where声明。该方法的100%灵活性适用于所有挑战。另外,一旦超过wtf就更容易遵循代码,这是1 = 1的无意义反应。