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. SQL インジェクションを防ぐためにSqlParametersを実際に利用する必要があります ( dotnetperls.comの良い例) 。
  3. UI 値が何らかの検証で正しいかどうかを確認するか、有効な値( DateTimePickerCalendar、... )のみを許可するコントロールを選択することをお勧めします。
于 2012-09-05T07:45:35.277 に答える
2

例外の原因となっている問題は、txtFromDateand/orの値txtToDateが日付を表していると認識されていないことです。

より大きな問題は、有効な値の後に';delete from dbo.KmtAccounts;---.

どちらの問題も、クエリselect expense from dbo.KmtAccounts where date between @from and @to and registernumber=@regを作成し、パラメータを使用して日付 (文字列ではなく日付として) と reg-number をクエリに追加することで解決されます。

于 2012-09-05T07:46:25.323 に答える