C# 日期时间值不正确:'';对于列';入口日期';在第一排

C# 日期时间值不正确:'';对于列';入口日期';在第一排,c#,C#,我在我的winform中添加了一个Datetimepicker,它应该在用户选择数据库列输入日期时插入日期和时间,但我收到上述错误,如有任何帮助,将不胜感激 private void btnSubmitClients_Click_1(object sender, EventArgs e) { var connectionString = ConfigurationManager.ConnectionStrings["Pigen"].ConnectionString;

我在我的winform中添加了一个Datetimepicker,它应该在用户选择数据库列输入日期时插入日期和时间,但我收到上述错误,如有任何帮助,将不胜感激

private void btnSubmitClients_Click_1(object sender, EventArgs e)
    {

       var connectionString = ConfigurationManager.ConnectionStrings["Pigen"].ConnectionString;

            connection = new MySqlConnection(connectionString);
            connection.Open();

        //     try
        {

            string CmdText = "INSERT INTO t_pi_Clients(ClientCode,ClientName,PostalAdd,Telephone,Fax,EntryDate,EmailAdd1,EmailAdd2,EmailAdd3,Website,TotalDeposit,AccountBal,ChargeRate)VALUES(@ClientCode, @ClientName, @PostalAdd, @Telephone, @EntryDate, @Fax, @EmailAdd1, @EmailAdd2, @EmailAdd3, @Website, @TotalDeposit, @AccountBal, @ChargeRate)";
            MySqlCommand cmd = new MySqlCommand(CmdText, connection);

            cmd.Parameters.AddWithValue("@ClientCode", txtboxClientCode.Text);
            cmd.Parameters.AddWithValue("@ClientName", txtboxClientName.Text);
            cmd.Parameters.AddWithValue("@PostalAdd", txtboxPostalAddress.Text);
            cmd.Parameters.AddWithValue("@Telephone", txtboxTelephone.Text);
            cmd.Parameters.AddWithValue("@Fax", txtboxFax.Text);
            cmd.Parameters.AddWithValue("@EmailAdd1", txtboxEmailAddress1.Text);
            cmd.Parameters.AddWithValue("@EmailAdd2", txtboxEmailAddress2.Text);
            cmd.Parameters.AddWithValue("@EmailAdd3", txtboxEmailAddress3.Text);
            cmd.Parameters.AddWithValue("@Website", txtboxWebsite.Text);
            cmd.Parameters.AddWithValue("@TotalDeposit", txtboxTotalDepo.Text);
            cmd.Parameters.AddWithValue("@AccountBal", txtboxAccountBal.Text);
            cmd.Parameters.AddWithValue("@ChargeRate", txtboxChargeRate.Text);
            cmd.Parameters.AddWithValue("@EntryDate", dateTimePicker1.Value.ToString("yyyy-MM-dd hh:mm:ss"));

            int result = cmd.ExecuteNonQuery();

没有必要进行转换

试试这个

DateTime dt=new DateTime();
if(DateTime.TryParse(dateTimePicker1.Value.ToString(),out dt))
{
cmd.Parameters.AddWithValue("@EntryDate", dt);

}

首先尝试将其放入
DateTime
中,然后将值赋给
参数

这将帮助你

 'YYYY-MM-DD HH:MI:SS'
使用时间组件作为24小时时钟。(即,作为00和23之间的值提供的小时数。)

MySQL提供了一个内置函数
STR_TO_DATE
,可以将各种格式的字符串转换为
DATE
DATETIME
数据类型

因此,也可以通过调用该函数来指定
DATETIME
的值,如下所示:

STR_TO_DATE('12/21/2012 1:13:58 PM','%m/%d/%Y %h:%i:%s %p')
...  cmd.Parameters.AddWithValue('@EntryDate', STR_TO_DATE(dateTimePicker1.Value,'%m/%d/%Y %h:%i:%s %p');
因此,如果您的值列表如下所示,您可以让MySQL在INSERT语句中为您进行转换:

STR_TO_DATE('12/21/2012 1:13:58 PM','%m/%d/%Y %h:%i:%s %p')
...  cmd.Parameters.AddWithValue('@EntryDate', STR_TO_DATE(dateTimePicker1.Value,'%m/%d/%Y %h:%i:%s %p');

我做了一次彻底的代码检查,并用列和值实现了我的insert语句,例如
“insert INTO t_pi_客户端(ClientCode、ClientName、PostalAdd(…)VALUEMVALUES(@ClientCode、@ClientName、@PostalAdd(…)
与数据库中的排列不匹配,因此我重新排列了insert语句,并使用了
cmd.Parameters.AddWithValue(“@EntryDate”,dateTimePicker1.Value)
并且它与我的数据类型datetime一起工作。tanx@POHH对于你们摇滚乐的时间

我仍然得到相同的错误,并且输入日期数据类型设置为中的datetimedatabase@galaxybomb使用调试器并检查
dateTimePicker1.Value
是否包含日期??我使用了调试器,是的,它包含日期,但格式为{1/1/2015}如果我将数据库的数据类型更改为timestamp,默认值为当前工作时间,您可以调试结果包含什么吗?结果还包含格式为{dd/mm/yyyy hh:mm:ss}的日期和时间。如果我将datetimepicker1解析为Text cmd.Parameters.AddWithValue(@EntryDate”,datetimepicker1.Text),是否存在安全问题;因为这也适用于数据类型TIMESTAMP您正在使用的数据库和列的数据类型?并且没有任何安全原因,但始终建议将日期保存为datetime格式@DB LEVEL您可以参考此