我在我的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();
答案 0 :(得分:1)
无需转换
试试这个
DateTime dt=new DateTime();
if(DateTime.TryParse(dateTimePicker1.Value.ToString(),out dt))
{
cmd.Parameters.AddWithValue("@EntryDate", dt);
}
答案 1 :(得分:0)
首先尝试将其放入DateTime
,然后将值提供给parameter
这会对你有帮助....
'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')
所以,如果您的VALUES列表如下所示,您可以让MySQL在INSERT语句中为您进行转换:
... cmd.Parameters.AddWithValue('@EntryDate', STR_TO_DATE(dateTimePicker1.Value,'%m/%d/%Y %h:%i:%s %p');
答案 2 :(得分:0)
我做了一个彻底的代码检查并实现了我的插入语句,其中列和值如"INSERT INTO t_pi_Clients(ClientCode,ClientName,PostalAdd(..)VALUEVALUES(@ClientCode, @ClientName, @PostalAdd(...)
与我的数据库中的排列不匹配,所以我重新安排了我的insert语句并使用了cmd.Parameters.AddWithValue("@EntryDate", dateTimePicker1.Value);
和它使用我的数据类型datetime。 tanx @POHH适合你们摇滚的时间