1

我正在尝试创建一个数据网格视图,该视图在今天之后返回某个用户的记录。列名是正确的。但这给了我一个错误,阅读“'>'附近的语法不正确”

这是代码。

txtdate.Text = DateTime.Today.ToString("dd-MM-yyyy");
SqlConnection conn = Database.GetConnection();
SqlCommand cmd = new SqlCommand("SELECT * FROM HomeCareVisit WHERE MedicalStaffID=" + IDBox1.Text+"AND ScheduledDateTime=>"+txtdate , conn);
4

4 回答 4

2

有几个问题;

new SqlCommand("SELECT * FROM HomeCareVisit WHERE MedicalStaffID=" +
                IDBox1.Text+"AND ScheduledDateTime=>"+txtdate , conn);

您之前忘记了一个空格AND,大于或等于的运算符是>=,不是=>

new SqlCommand("SELECT * FROM HomeCareVisit WHERE MedicalStaffID=" +
                IDBox1.Text+" AND ScheduledDateTime>="+txtdate , conn);

此外,您没有引用注入到 SQL 中的字符串,您需要用';将它们括起来。

new SqlCommand("SELECT * FROM HomeCareVisit WHERE MedicalStaffID='" +
                IDBox1.Text+"' AND ScheduledDateTime>='"+txtdate+"'" , conn);

该查询应该运行,但仍然容易受到 SQL 注入的攻击。您应该真正考虑使用 SQL 命令的参数,而不是将 SQL 参数构建为字符串。

于 2013-08-16T11:01:52.910 回答
1

只要ScheduledDateTime是日期时间字段,您就应该将其与例如字符串常量进行比较,因此您应该'在此常量周围添加。

并更改=>>=

SqlCommand cmd = new SqlCommand("SELECT * FROM HomeCareVisit WHERE MedicalStaffID=" + IDBox1.Text+" AND ScheduledDateTime>='"+txtdate+"'" , conn);
于 2013-08-16T10:59:39.523 回答
0

你想要大于还是等于?

SqlCommand cmd = new SqlCommand("SELECT * FROM HomeCareVisit WHERE MedicalStaffID=" + IDBox1.Text+"AND ScheduledDateTime>="+txtdate , conn);

只需将等于和大于相反。

于 2013-08-16T10:59:39.853 回答
0

你首先弄错了顺序,>然后=在你最后一个条件..

txtdate.Text = DateTime.Today.ToString("dd-MM-yyyy");


        SqlConnection conn = Database.GetConnection();
        SqlCommand cmd = new SqlCommand("SELECT * FROM HomeCareVisit WHERE MedicalStaffID=" + IDBox1.Text+"AND ScheduledDateTime>="+txtdate , conn);
于 2013-08-16T11:00:16.170 回答