简体   繁体   English

将c#的datetimepicker存储到mysql数据库中

[英]store datetimepicker value of c# into mysql database

Hello I want to store datetimepicker value into mysql database my code is given below 您好我想将datetimepicker值存储到mysql数据库中我的代码如下

dtpDate = datetimepicker1.value.date;
dtpTime = datetimepicker2.value.Timeofday;
MySqlCommand cmd = new MySqlCommand("INSERT INTO schedule_days(schedule_name,start_time,status,days,start_date,connector_id) VALUES ('" + name + "','" + dtpTime + "','" + s + "','" + day + "','"+dtpDate+"','" + chkArray[i].Tag + "')", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

but no value is being stored at database and at that place there is unable to read data comes. 但没有值存储在数据库中,并且在那个地方无法读取数据。 what may be the problem? 可能是什么问题?

The Value is not being entered at MySQL database because there is mistake in your query at dtpTime and dtpDate fields. 由于您的查询在dtpTime和dtpDate字段中存在错误,因此未在MySQL数据库中输入值。

you shout replace it whith dtpTime.Value.TimeofDay and dtpDate.Value.Date ane new query will be like this 你大声地用dtpTime.Value.TimeofDay和dtpDate.Value.Date替换它,新的查询会是这样的

dtpDate = datetimepicker1.value.date;
dtpTime = datetimepicker2.value.Timeofday;
MySqlCommand cmd = new MySqlCommand("INSERT INTO schedule_days(schedule_name,start_time,status,days,start_date,connector_id) VALUES ('" + name + "','" + dtpTime.Value.TimeofDay + "','" + s + "','" + day + "','"+dtpDate.Value.Date.ToString("yyyy-MM-dd HH:mm")+"','" + chkArray[i].Tag + "')", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

Well, it may not be the cause of the problem (are there any exceptions? What does ExecuteNonQuery return?) but you should definitely not be building up your SQL like this. 好吧,它可能不是问题的原因(有任何异常吗? ExecuteNonQuery返回什么?)但你绝对不应该像这样构建你的SQL。 It leads to SQL injection attacks , as well as data conversion problems. 它会导致SQL注入攻击以及数据转换问题。

Instead, you should use parameterized SQL: 相反,您应该使用参数化SQL:

using (MySqlConnection conn = new MySqlConnection(...))
{
    conn.Open();
    using (MySqlCommand cmd = new MySqlCommand(
       "INSERT INTO schedule_days(schedule_name,start_time,status,days,start_date,connector_id) " +
       "VALUES (@name, @time, @status, @days, @date, @connector)", conn))
    {
        cmd.Parameters.Add("@name", MySqlDbType.VarChar).Value = name;
        cmd.Parameters.Add("@time", MySqlDbType.Time).Value = dtpTime;
        cmd.Parameters.Add("@status", MySqlDbType.VarChar).Value = s;
        cmd.Parameters.Add("@days", MySqlDbType.Int32).Value = day;
        cmd.Parameters.Add("@date", MySqlDbType.Date).Value = dtpDate;
        cmd.Parameters.Add("@connector", MySqlDbType.VarChar).Value = chkArray[i].Tag;

        int insertedRows = cmd.ExecuteNonQuery();
        // TODO: Validate that insertedRows is 1?
    }
}

I've guessed at the data types - please check them against your actual database. 我已经猜到了数据类型 - 请根据您的实际数据库进行检查。

Using NuGet Package MySql.Data 6.6.4 . 使用NuGet包MySql.Data 6.6.4

Currently MySqlParameter does not support unnamed parameters. 目前,MySqlParameter不支持未命名的参数。 Parameters must begin with with a ? 参数必须以?开头? .

Example: 例:

command.Parameters.AddWithValue("?Parameter", value);

Something like this should work. 这样的事情应该有效。 Avoid string concatenation with Sql because that can lead to security risks. 避免与Sql串联,因为这可能导致安全风险。

dtpDate = datetimepicker1.value.date.ToString("yyyy-MM-dd HH:mm"); //Formatted Date for MySql
dtpTime = datetimepicker2.value.Timeofday;

using(var connection = new MySqlConnection(connectionString))
{
    using(var command = connection.CreateCommand())
    {
        command.CommandText = "INSERT INTO schedule_days(schedule_name,start_time,status,days,start_date,connector_id) VALUES ( ?ScheduleName, ?StartTime, ?Status, ?Days, ?StartDate, ?ConnectorId )";
        command.Parameters.AddWithValue("?ScheduleName", name);
        command.Parameters.AddWithValue("?StartTime", dtpTime);
        command.Parameters.AddWithValue("?Status", s);
        command.Parameters.AddWithValue("?Days", day);
        command.Parameters.AddWithValue("?StartDate", dtpDate);
        command.Parameters.AddWithValue("?ConnectorId", chkArray[i].Tag);

        connection.Open();
        command.ExecuteNonQuery();
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM