如何使用datetime列类型将datetimepicker默认值插入MYSQL?

时间:2014-01-14 01:17:25

标签: c# mysql winforms datetime

我有2个项目,一个是CRUD类,另一个是包含将访问CRUD类的WinForm。 这里出现了我的问题,每当我试图在日期时间列类型的MYSQL中插入默认值的DateTimePicker时,我得到0000-00-00 00:00:00零零零值,我错过了什么?

这是我的CRUD类代码,我的CRUD类名为DBConnect.cs

public DateTime property_dtDate { get; set; }

sqlQuery = "INSERT INTO master (NoInvoice, Name, Date, Type, Additionaltext) VALUES ('" + property_NoInvoice + "', '" + property_sName + "', '" + property_dtDate + "', '" + property_sType + "', '" + property_sAdditionalText + "')"; 

这是我的WinForm代码的一部分,我把它命名为Form1.cs(两者都在分离的项目中)

clsDbConnect.property_dtDate = DateTime.Parse(datetimepicker1.Value.ToString("yyyy-MM-dd HH:mm:ss"));

clsDbConnect.Insert();

我尝试用messagebox查看值,通过我的WinForm传递的值是好的,没有什么可疑的,它显示了正确知道的每个日期和时间,但是当我查看我的数据库时,我得到的是{ {1}}我不知道是什么原因导致请帮助我找到

1 个答案:

答案 0 :(得分:0)

我认为你有一个问题,因为日期时间的字符串格式。 MySQL不能将您的字符串格式理解为datetime值 尝试使用参数(在代码中假设您有一个SqlCommand对象):

string query = "INSERT INTO master (NoInvoice, Name, Date, Type, Additionaltext) VALUES (@NoInvoice, @sName, @dtDate, @sType, @sAdditionalText)";
using(SqlCommand command = New SqlCommand(query, yourconnection)
{
    command.Parameters.AddWithValue("@NoInvoice", property_NoInvoice);
    command.Parameters.AddWithValue("@sName ", property_sName);
    command.Parameters.AddWithValue("@dtDate ", property_dtDate);
    command.Parameters.AddWithValue("@sType ", property_sType);
    command.Parameters.AddWithValue("@sAdditionalText ", property_sAdditionalText);

    command.ExecuteNonQuery();
}

使用参数有助于类型安全(日期时间和数字格式问题)并防止出现SQL injection漏洞。

然后当您不需要解析datetimepicker的值来键入DateTime因为ti已经DateTimeFrom MSDN: DateTimePicker.Value

clsDbConnect.property_dtDate = datetimepicker1.Value;