2012-03-26 23 views
1
比较

时,当我在VB中的文本框中输入访问数据库和日期比较日期我的SQL语句返回空日期。在我看来,这两个日期是不同的格式,所以从select语句返回null,但我怎么去做这件事。请帮助。我的选择如下:如何从Access数据库日期texbox在VB

("SELECT farmer_num as [FARMER'S NUMBER], " & _ 
             "farmer_name as [FARMER'S NAME], farmer_village  as [VILLAGE], farmer_phone as [PHONE NUMBER], reg_date as [REGISTRATION DATE], " & _ 
             "farmer_centre as [CENTRE] FROM farmer where reg_date =" & TextBox.Text.ToString, cnn)` 

回答

2

第一点,你不应该在受信任的用户输入到你的SQL中争分夺秒。它使您的代码非常容易受到SQL Injection的攻击,这是易受攻击且易受攻击的漏洞。

您应该使用parameterized queries代替。

这本身就可以解决您的问题,如果你是幸运的。如果您使用参数化查询,那么数据类型转换几乎“神奇地”发生。你不需要担心它。

下面是专门与Access数据库和.NET处理沿着帮你的文章的链接:http://www.mikesdotnetting.com/Article/26/Parameter-Queries-in-ASP.NET-with-MS-Access好给

+0

非常感谢你。我刚刚阅读链接,并添加了###,现在一切正常。 – ken 2012-03-26 18:17:37

0

regdate的类型是日期。

而且地方你必须在你的代码的某个地方约会在文本框中显示的日期,然后使用一个参数化查询,日期,不是它的格式化字符串版本作为参数值。

除了@ David提到的SQl注入问题,请记住'8/6/2012'是一个字符串而不是日期。

+0

谢谢。我使用参数化查询和工作人员非常棒 – ken 2012-03-26 18:18:50

0

使用这样的..

("SELECT farmer_num as [FARMER'S NUMBER], " & _ "farmer_name as [FARMER'S NAME], farmer_village as [VILLAGE], farmer_phone as [PHONE NUMBER], reg_date as [REGISTRATION DATE], " & _ "farmer_centre as [CENTRE] FROM farmer where convert(datetime, '" & TextBox.Text.ToString &"', 101)"; 

您可能需要更改第二个参数转换功能可按如果不是MM/DD/YYYY不同的文本框格式。

字符串连接不使用参数化的SQL妥善解决。尝试使用SqlCommand和SqlParameter。

+0

我刚刚在'TextBox.Text.ToString'周围添加了'##',它正在工作。让我试试你的想法吧。感谢您的答复 – ken 2012-03-26 18:21:22

相关问题