【问题标题】:How to get date from textbox and use it for SELECT Statement如何从文本框中获取日期并将其用于 SELECT 语句
【发布时间】:2018-12-06 12:25:01
【问题描述】:

我做了一个程序,它显示了我数据库中的一个表。

声明如下:

string sql = ("select CCase.RefNo AS Az, EventTemplate.EventCode AS
    Vorgang from ikaros.CCase join ikaros.Event on CCase.ID =
    Event.CCaseID join ikaros.EventTemplate on Event.EventTemplateID  =
    EventTemplate.ID where EventTemplate.EventCode='IRVB' and
    Event.EventDate ='2014-07-03' order by CCase.RefNo ASC");

现在有

Event.EventDate='2014-07-03'

我得到了 SELECT 语句中给出的那个日期的表。 但我想让用户有机会在文本框中提供另一个日期。 文本框应更改语句中的日期。

我看过这里:

Try 1

Try 2

但这与我遇到的问题不同。 如果这是重复的,我只是很傻才找到它,请告诉我。

【问题讨论】:

标签: c# sql wpf datepicker


【解决方案1】:

有问题的添加链接显示您正在使用 WPF 所以,

如果您的日期来自TextBox,那么您应该使用TextBox.Text 属性从用户输入中读取日期,例如

var date = TextBox1.Text;

如果您使用了DatePicker,那么您可以使用DatePicker.SelectedDate.Value.Date 属性来读取用户输入

 var date = DatePicker1.SelectedDate.Value.Date;

然后把这个传递给sql查询

string sql = ("select ... where EventTemplate.EventCode='IRVB' and
    Event.EventDate ='"+ date +"' order by CCase.RefNo ASC");

注意:始终使用prepared statements(参数化查询)来防止sql注入攻击。

我不确定您使用的是 ADO.NET,但您的参数化查询看起来像

string sql = ("select ... where EventTemplate.EventCode='IRVB' and
        Event.EventDate = @date order by CCase.RefNo ASC");

SqlCommand command = new SqlCommand(sql, connection);
command.Parameters.AddWithValue("@date", date);

【讨论】:

  • Visual Studio 说:“错误 1 ​​当前上下文 Z:\programmierung\IRVB\IRVB\Form1.cs 69 286 IRVB 中不存在名称‘日期’”
  • 声明 var date 在与您的查询相同的范围内。您正在声明范围之外的变量,这就是 vs 给您错误的原因
  • OP 是否使用 WinForms? WPF? UWP?这是哪一个?您推荐不使用参数化查询的代码,然后建议始终使用参数化查询?很难为一个不好的问题提供一个好的答案。 OP 需要澄清问题。
  • @David,我认为您没有访问 OP 添加的相关链接。 OP 添加了所有与 WPF 相关的链接。在将参数化查询代码答案添加到我的答案之前,已经有人反对了。
  • @er-shoaib 解决方案完美运行!真的非常感谢你是我的英雄:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多