C# 将数据插入数据库时出错

C# 将数据插入数据库时出错,c#,mysql,C#,Mysql,'输入字符串的格式不正确。' 我试图使用c#将数据插入MYSQL数据库,但收到的错误消息是 输入字符串的格式不正确。当它到达(ExecuteOnQuery)时,我有这个错误 }AddWithValue的第二个参数不是参数的类型,而是值 cmd.Parameters.AddWithValue("@P_Customers_customer_id", TB_Shop_ReservNum.Text); 如您所见,这仍然很弱,因为您传递了一个字符串,AddWithValue决定了查看接收到的输入的参数类

'输入字符串的格式不正确。'

我试图使用c#将数据插入MYSQL数据库,但收到的错误消息是

输入字符串的格式不正确。当它到达(ExecuteOnQuery)时,我有这个错误


}AddWithValue的第二个参数不是参数的类型,而是值

cmd.Parameters.AddWithValue("@P_Customers_customer_id", TB_Shop_ReservNum.Text);
如您所见,这仍然很弱,因为您传递了一个字符串,AddWithValue决定了查看接收到的输入的参数类型

这篇博文解释了AddWithValue的所有弱点

我更喜欢这样使用Add方法

cmd.Parameters.Add("@P_Customers_customer_id", MySqlDbType.Int32).Value = Convert.ToInt32(TB_Shop_ReservNum.Text);
最后,当您传递字符串“sysdate()”时,它将不会在系统日期中解析,而是在文本字符串中解析,显然文本“sysdate()”不是日期

在这种情况下,您应该使用存储过程获取服务器上的系统日期或传递本地计算机的日期时间。现在

sysdate()
不是可以转换为日期的字符串。如果要发送当前时间,请使用
DateTime.UtcNow

cmd.Parameters.AddWithValue("@P_date", MySqlDbType.DateTime).Value = DateTime.UtcNow;
当执行隐式转换时,数据库不执行字符串标记-它只是尝试将其转换为所需的类型


另外:
@p\u Customers\u customer\u id
@p\u shop\u id
@p\u total
都是数字,但是给定文本值,这是一个非常糟糕的主意

尝试为日期参数指定一个真实的日期如果您总是希望在
日期
中使用sysdate,那么就将其放入选择框,而不用麻烦为其使用参数。
cmd.Parameters.AddWithValue("@P_date", MySqlDbType.DateTime).Value = DateTime.UtcNow;