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();
}
質問する
364 次
2 に答える
3
コード内で改善すべき点がいくつかあります。
- txtFromDate と txtToDate はコントロールのようです? ! txtFromDate.Text にアクセスしたいと思います
- SQL インジェクションを防ぐためにSqlParametersを実際に利用する必要があります ( dotnetperls.comの良い例) 。
- UI 値が何らかの検証で正しいかどうかを確認するか、有効な値( DateTimePicker、Calendar、... )のみを許可するコントロールを選択することをお勧めします。
于 2012-09-05T07:45:35.277 に答える
2
例外の原因となっている問題は、txtFromDate
and/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 に答える