我真的很困惑为什么我的脚本总是给出错误结果我想要' 如果部分 '有多个条件
像这样
string kalimatsql2 = "SELECT ID FROM Questions WHERE (content = '" + var + "'" + " && Quiz_ID = '" + idQuiz + "')";
Run Code Online (Sandbox Code Playgroud)
我已经尝试改变地方单引号,更改=为==,ommited (),dll但仍然给出错误
查询表达式中的语法错误(缺少运算符)'(content ='test2'&& Quiz_ID ='6')'.
更新
string kalimatsql2 = "SELECT ID FROM Questions WHERE (content = '" + dataDel + "'" + " AND Quiz_ID = " + idQuiz + ")";
int idQuestion = sqlReader(kalimatsql2);
Run Code Online (Sandbox Code Playgroud)
这是sqlReader函数的代码
private int sqlReader( string kalimatSql)
{
Global.dbCon.Open();
List<int> idQuestions = new List<int>();
Global.reader = Global.riyeder(kalimatSql);
if (Global.reader.HasRows)
{
while (Global.reader.Read())
{
int idQuestion = Convert.ToInt32(Global.reader.GetValue(0));
idQuestions.Add(idQuestion);
}
}
Global.dbCon.Close();
foreach (int id in idQuestions) {
return id;
}
return (idQuestions.Count > 0) ? idQuestions[0] : -1;
}
Run Code Online (Sandbox Code Playgroud)
我使用microsoft访问作为数据库
Gra*_*ICA 11
你似乎在混合LINQ和SQL.
替换&&为AND.
而且你可能还必须从idQuiz周围删除单个撇号,如果它实际上是一个数字而不是一个字符串.
此外,我们无法看到您的其余代码,但您需要查看参数化查询,而不是将它们连接成一个字符串.它更安全,更易于阅读和维护.
这是即时的,因此可能存在一些语法错误.它并不完全按照你的例子 - 我不确定你在Global课堂上有什么样的逻辑.
private int GetQuestionIds(string content, int quizId)
{
List<int> idQuestions = new List<int>();
string query
= "SELECT ID FROM Questions WHERE (content = @content AND Quiz_ID = @quizId)";
using (var connection = new SqlConnection(connectionString))
{
var command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@content", content);
command.Parameters.AddWithValue("@quizId", quizId);
try
{
connection.Open();
var reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
int idQuestion = Convert.ToInt32(Global.reader.GetValue(0));
idQuestions.Add(idQuestion);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
return idQuestions.Any() ? idQuestions.First() : -1;
}
Run Code Online (Sandbox Code Playgroud)
您可以在MSDN上找到更多信息.