0
 private void btnCheck_Click(object sender, EventArgs e)
        {
            string costring = connection();
            string MyQuery = "select expense from dbo.KmtAccounts where date between '"+ txtFromDate +"' and '" +txtToDate +"' and    registernumber='" + txtRegNo.Text + "'";
            SqlConnection conn = new SqlConnection(costring);
            SqlCommand cmd = new SqlCommand(MyQuery, conn);
            conn.Open();
            txtResult.Text = Convert.ToString(cmd.ExecuteScalar());
            conn.Close();
        }
4

2 回答 2

3

您的代码中有几点需要改进。

  1. 看来txtFromDate 和 txtToDate 是控件?!我想你想访问 txtFromDate.Text
  2. 你真的应该使用SqlParameters来防止 SQL 注入dotnetperls.com上的好例子)
  3. 您可以通过某种验证来检查您的 UI 值是否正确,或者甚至更好,选择一个只允许有效值的控件DateTimePickerCalendar,...
于 2012-09-05T07:45:35.277 回答
2

导致异常的问题是txtFromDate和/或中的值txtToDate不被理解为表示日期。

更大的问题是,似乎很少或根本没有可以阻止其中一个包含有效值的值,然后是';delete from dbo.KmtAccounts;---.

这两个问题都可以通过查询来解决select expense from dbo.KmtAccounts where date between @from and @to and registernumber=@reg,然后使用参数将日期(作为日期,而不是字符串)和注册号添加到查询中。

于 2012-09-05T07:46:25.323 回答