这行代码有几个问题:
textbox2.Text ="Found "+ count+" Members;
首先,存在语法错误。你永远不会关闭第二组报价。你会这样做:
textbox2.Text ="Found "+ count+" Members";
但是,像这样的字符串连接仍然有点混乱。您有两个文字字符串,并且您试图将它们添加到一个整数中,这并不完全直观(并且可能比它需要的要慢)。相反,请考虑使用格式化字符串:
textbox2.Text = string.Format("Found {0} Members", count);
这将从count
(整数)中获取值,并在string.Format()
函数内部识别其字符串表示并将其插入格式化字符串的占位符中。
更新:这会处理编译时错误。现在你会得到一个运行时错误:
SqlCommand comm = new SqlCommand("SELECT COUNT(*) FROM Members where sponser = "
+textbox1.text+"'", connection);
一旦你尝试执行那个 SQL 语句,你就会从数据库中得到一个错误,因为结果查询有一个语法错误:
SELECT COUNT(*) FROM Members where sponser = some text'
您缺少参数的开头单引号。像这样的东西:
SqlCommand comm = new SqlCommand("SELECT COUNT(*) FROM Members where sponser = '"
+textbox1.text+"'", connection);
但是,这很重要,您还没有完成。这行代码对一个非常常见且易于利用的漏洞开放,称为SQL 注入。您将希望摆脱直接的字符串连接并为 SQL 查询使用参数。像这样的东西:
SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Members where sponser = @sponser");
cmd.Parameters.Add("@sponser", textbox1.text);
Int32 count = (Int32)comm.ExecuteScalar();
要知道,您仍然可以做很多事情来改进这一点,随着时间的推移,这一切都值得学习。您可以查看的内容是:
textbox1.text
在您尝试在 SQL 查询中使用它之前检查和验证用户输入 ( )。
comm.ExecuteScalar()
在尝试直接将其转换为 an 之前检查输出Int32
(如果由于某种原因它返回整数以外的任何内容,这会给您一个运行时错误)。
- 考虑使用 Linq to Sql 之类的东西来代替 ADO.NET 组件,因为它可以为您做更多的事情,而您的代码更少。