【问题标题】:Can I use count(*) and AND in select sql query at same time?我可以同时在 select sql 查询中使用 count(*) 和 AND 吗?
【发布时间】:2016-04-08 17:17:47
【问题描述】:
 SqlConnection sc = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\6th sem\DNT\tutorials\application\WindowsFormsApplication2\WindowsFormsApplication2\Login.mdf;Integrated Security=True");
sc.Open();

SqlCommand cmd = new SqlCommand();
cmd.Connection = sc;

//cmd.CommandText = "SELECT count(*) FROM dictionary WHERE word=@Word AND user=@Unique";
cmd.Parameters.AddWithValue("@Word", textBox_word.Text);
cmd.Parameters.AddWithValue("@Unique", frm.textUserName);
cmd.CommandText = "SELECT COUNT(*) FROM dictionary WHERE word=@Word AND user=@Unique";

int z = (int)cmd.ExecuteScalar();
MessageBox.Show(z.ToString());

if (z >= 1)
{
    MessageBox.Show("word already entered in your id");
}
else
{
}

我的代码总是在 else 部分,上面查询的输出总是 0 !!!

【问题讨论】:

  • 正确的返回值应该是多少?
  • 这是什么关系型数据库? NM... [MSSQLLocalDB] Dictionary 是需要转义的保留字。 msdn.microsoft.com/en-us/library/ms189822.aspx 将字典包裹在 []
  • 字典是我在 Visual Studio 本地数据库中的表名
  • 把字典用括号括起来能用吗? SELECT count(*) FROM [dictionary] WHERE word=@Word AND user=@Unique";?也许 cmd.executeSacalar() 正在引发错误,并且由于 z 尚未初始化,它会转到 else 。从上面的链接...“尽管在语法上可以使用 SQL Server 保留关键字作为 Transact-SQL 脚本中的标识符和对象名称,您只能通过使用分隔标识符来做到这一点。”
  • 回答您的具体问题:是的,您可以在 SQL 查询中同时使用 AND 和 count(*)。

标签: sql sql-server


【解决方案1】:

您可能应该使用 Profiler 来查看传递给您的参数的内容,但我非常怀疑这一行:

  cmd.Parameters.AddWithValue("@Unique", frm.textUserName);

您不想像使用@Word 参数那样访问textUserName 对象的.text 属性吗?

【讨论】:

  • 实际上它是我在表单 3 中使用 form1 属性的 form1 的值,因此无需担心该行绝对没问题,并且肯定只传递文本值
  • 因此,请使用分析器查看您的应用程序正在执行哪些 SQL,然后向我们展示您拥有哪些您希望返回但没有返回的数据。您的代码中没有错误,因此您传递的参数或您的数据根本不是您认为的那样。
【解决方案2】:

终于找到答案了... 这是 SQL 数据库列名称用户的问题,他们不允许我不知道原因,但在我的情况下就是这样。 所以我将coloumn名称更改为user1,它可以正常工作......

【讨论】:

    【解决方案3】:

    建议1:-
    请将 textBox_word.Textfrm.textUserName 的值存储在另一个值中,然后放在这里。

    cmd.Parameters.AddWithValue("@Word", value1); cmd.Parameters.AddWithValue("@Unique",value2);

    如果还有问题,那么
    建议2:-

    请调试代码并检查 value1 和 value2 的确切值

    【讨论】:

      猜你喜欢
      • 2016-01-06
      • 2018-08-07
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 2017-05-29
      • 2011-02-14
      • 1970-01-01
      • 2016-02-06
      相关资源
      最近更新 更多