在datatimepicker之后过滤select语句

时间:2016-01-19 12:17:05

标签: c# sql

我有下一个代码C#:

cm.CommandText = "Select * from H_Facturi_Clienti where Serie like '" + TextBox1.Text + "%' and Numar like '" + textBox2.Text + "%' and Data >= '"+dateTimePicker1.Text+"'";

我知道这不起作用,因为我的datetimepicker是短格式:dd/MM/yyyy而sql中的Datasmalldatetimeyyyy/MM/dd hh:mm:ss

1 个答案:

答案 0 :(得分:2)

您有一个bad habits to kick,您尝试将string发送到键入smalldatetime的列。

直接发送<{1}}属性 ,而不是它的字符串表示。

但更重要的是,您应该始终使用parameterized queries。这种字符串连接对SQL Injection攻击开放。

Value

同样using(var con = new SqlConnection(conStr)) using(var cm = con.CreateCommand()) { cm.CommandText = @"Select * from H_Facturi_Clienti where Serie like @serie and Numar like @numar and Data >= @data"; cm.Parameters.Add("@serie", SqlDbType.NVarChar).Value = TextBox1.Text + "%"; cm.Parameters.Add("@numar", SqlDbType.NVarChar).Value = textBox2.Text + "%"; cm.Parameters.Add("@data", SqlDbType.SmallDateTime).Value = dateTimePicker1.Value; // Do whatever you want } 非常糟糕。阅读Why is SELECT * considered harmful?

最后,SELECT *忽略它&#39;案例)在SQL Server的未来版本中可能是reserved keyword。您可能希望将其用作Data,但作为最佳做法,请将其更改为 - 保留字。