【发布时间】:2012-04-12 19:35:25
【问题描述】:
我正在用 C# 编写一个程序,我可以在其中按年和月选择数据并将其放入 dataGridView 中。年份部分很简单。我从组合框中选择年份并执行以下查询:
"SELECT * FROM table WHERE YEAR(date) = '" + year_comboBox.Text + "'";
因为数据库中的年份格式是 2010、2011、2012 等等,所以一切正常。但是当谈到月份时,它们在我的组合框中,如 1 月、2 月、3 月等,它们在数据库中的格式是 01、02、03 等。所以我需要不同类型的查询,或者我需要编写更多代码,以便我可以将一月、二月和其他月份的字符串转换为 01、02 等等,这并不是真正的代码效率。
那么有没有一种简单类型的查询,我可以在不输入转换月份字符串的情况下完成这项工作?
【问题讨论】:
-
注意 sql 注入。 xkcd.com/327
-
您应该使用参数化查询来防止 SQL 注入。下面是如何在 C# 中执行此操作的示例:dotnetperls.com/sqlparameter 作为一个示例,说明您遇到的问题是什么,我可以在年份框中输入
'; drop table table;--并造成严重破坏。
标签: c# sql-server