c# - 使用 C#(日期)和 DateTimePicker 格式化 MySQL 数据

标签 c# sql mysql database

我有一个与远程数据库交互的 Windows 窗体应用程序。该数据库包含 2 个表。

用户可以在 MaskedTextBox 中输入日期,然后通过单击按钮并发出语句来更新记录。然而,使用 maskedtextbox 很烦人,因为 MySQL 日期列采用 YYYY-MM-DD 格式。因此,用户必须在屏蔽文本框中输入例如 2010-11-15 才能正常工作(这是有效的,但输入这种格式并不那么直观)。我想改用 DateTimePicker,但由于此控制“文本”属性给出的格式为 DD-MM-YYYY,当我转换为字符串时,它看起来像 15-11-2010。 MySQL 显然没有正确处理这个问题。

处理这个问题的最佳方法是什么,我应该从 Datetimepicker.text 中解析 3 组数字(日、月、年)吗?或者有没有办法改变MySQL日期采用的实际格式?或者我可以编辑 SQL 语句来更改返回日期的格式吗?

这是我正在使用的 sql 语句,以防有任何用途:

commandinsert.CommandText = "insert into jobs (id,date) values ('" + comboBox1.Text + "','" + maskedTextBox1.Text + "')";

提前致谢。

最佳答案

您应该使用参数传递文本。
然后,您可以直接将 DateTimePicker 的 SelectedDate 属性作为参数传递,MySQL 客户端将发送正确的数据。

这也将防止 SQL 注入(inject)攻击。

有关详细信息,请参阅here

关于c# - 使用 C#(日期)和 DateTimePicker 格式化 MySQL 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4228744/

相关文章:

用于 C++ 的 C# 包装器,但仅编译为静态库

c# - WCF 的流传输限制

c# - 如何将 LinkBut​​ton 打印到页面?

php - 从 PHP 中的表中获取主题

php - 无法识别我在 PHP 中进行的查询中的 MySQL 错误

c# - 页面刷新后保留值

sql - 规范化表上 Postgres 中的行级安全性

sql - 如何在一个查询中同时返回空值和非空值

php - 来自更多位置的 "Remember me"

mysql - 使用变量作为 AUTO_INCRMENT 的整数