简体   繁体   English

c#数据库选择然后插入。 但值为0

[英]c# database Select then insert. But the value is 0

I am trying to select then insert a datetime from Table 1 to Table 2. I have successfully insert the data. 我试图选择然后在表1到表2中插入一个日期时间。我已经成功插入了数据。 However, the datetime shown in Table 2 is 0000-00-00 00:00:00. 但是,表2中显示的日期时间为0000-00-00 00:00:00。 Idk where is the error. idk错误在哪里。 Someone please help me with this problem. 有人请帮助我解决这个问题。 I am struggling with this. 我为此感到挣扎。 And is this the correct way to SELECT then insert ? 这是选择然后插入的正确方法吗? (Select from Table 1 then INSERT into Table 2) (从表1中选择,然后插入表2)

 try
    {
        string myConnectionString;
        myConnectionString= "server=localhost;uid=root;pwd=root;database=medicloud;SslMode=None;charset=utf8";

        MySqlConnection connection = new MySqlConnection(myConnectionString);
        MySqlCommand cmd = new MySqlCommand();

        cmd.CommandType = CommandType.Text;

        EncodingProvider ppp;
        ppp = CodePagesEncodingProvider.Instance;
        Encoding.RegisterProvider(ppp);

        connection.Open();   

        string select = "Select time from assign where userId=@name";
        cmd.Parameters.AddWithValue("@name", txtValue.Text);                           
        cmd.CommandText = select;
        cmd.Connection = connection;


        MySqlDataReader selectAssign = cmd.ExecuteReader();
        selectAssign.Read();
        string assign = (selectAssign["time"].ToString());
        selectAssign.Close();


        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "INSERT into bluetooth (userId,arm,armNumberDone,armNumber,comDate,assignDate,status) VALUES (@name, @stupid0, @stupid1, @stupid2, @stupid3, @stupid4, @stupid5)";
        cmd.Parameters.AddWithValue("@stupid0", databaseLine);
        cmd.Parameters.AddWithValue("@stupid1", counter);
        cmd.Parameters.AddWithValue("@stupid2", databaseValue);
        cmd.Parameters.AddWithValue("@stupid3", DateTime.Now);
        cmd.Parameters.AddWithValue("@stupid4", assign);
        cmd.Parameters.AddWithValue("@stupid5", complete);
        cmd.Connection = connection;


        cmd.ExecuteNonQuery();
        connection.Close();

    }

    catch (MySqlException ex)
    {
        txtExercise.Text = ex.ToString();
    }

Please try with this 请尝试这个

try
{
      string myConnectionString;
      myConnectionString = "server=localhost;uid=root;pwd=root;database=medicloud;SslMode=None;charset=utf8";

      MySqlConnection connection = new 
           MySqlConnection(myConnectionString);
      MySqlCommand cmd = new MySqlCommand();

      cmd.CommandType = CommandType.Text;

      EncodingProvider ppp;
      ppp = CodePagesEncodingProvider.Instance;
      Encoding.RegisterProvider(ppp);

      connection.Open();

      string select = "Select time from assign where userId=@name";
      cmd.Parameters.AddWithValue("@name", txtValue.Text);
      cmd.CommandText = select;
      cmd.Connection = connection;

      MySqlDataReader selectAssign = cmd.ExecuteReader();
      selectAssign.Read();
      string assign = (selectAssign["time"].ToString());
      selectAssign.Close();

      DateTime assignDate = DateTime.Now;
      DateTime.TryParseExact(assign, out assignDate);

      cmd.CommandType = CommandType.Text;
      cmd.CommandText = "INSERT into bluetooth 
(userId,arm,armNumberDone,armNumber,comDate,assignDate,status) VALUES (@name, 
@stupid0, @stupid1, @stupid2, @stupid3, @stupid4, @stupid5)";
      cmd.Parameters.AddWithValue("@stupid0", databaseLine);
      cmd.Parameters.AddWithValue("@stupid1", counter);
      cmd.Parameters.AddWithValue("@stupid2", databaseValue);
      cmd.Parameters.AddWithValue("@stupid3", DateTime.Now);
      cmd.Parameters.AddWithValue("@stupid4", assignDate);
      cmd.Parameters.AddWithValue("@stupid5", complete);
      cmd.Connection = connection;

      cmd.ExecuteNonQuery();
      connection.Close();
   }
  catch (MySqlException ex)
  {
      txtExercise.Text = ex.ToString();
  }
}
cmd.Parameters.AddWithValue("@stupid3", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"));
cmd.Parameters.AddWithValue("@stupid4", GetDateString(assign));

Have a method like this: 有这样的方法:

public static string GetDateString(string date)
{
    DateTime theDate;
    if (DateTime.TryParseExact(date, "dd/MM/yyyy HH:mm:ss", 
            CultureInfo.InvariantCulture, DateTimeStyles.None, out theDate))
    {
        // the string was successfully parsed into theDate
        return theDate.ToString("dd/MM/yyyy HH:mm:ss");
    }
    else
    {
        // the parsing failed, return some sensible default value
        return string.Empty;
    }
}

You need to use .ExecuteReader() the use .Read() to move to each row in the result set. 您需要使用.ExecuteReader().Read()移至结果集中的每一行。 If you are sure the exactly one row will be returned, use .ExecuteScalar() instead. 如果您确定将只返回一行,请改用.ExecuteScalar() Research on the difference of both online. 研究两者在网上的区别。 Below is an example using .ExecuteReader() . 以下是使用.ExecuteReader()的示例。

I also re-wrote to use using statements to simplify a bit but not deviate too much from your original code so you do not need to worry about closing and disposing resources since they inherit from IDisposable and will do that automatically once they exit the using block: 我还重写了使用using语句,以简化操作,但又不会与您的原始代码有太大差异,因此您不必担心关闭和处置资源,因为它们是从IDisposable继承的,并且一旦退出using块便会自动执行:

string assign = DateTime.Now.ToString();

string myConnectionString;
    myConnectionString= "server=localhost;uid=root;pwd=root;database=medicloud;SslMode=None;charset=utf8";

string select = "Select time from assign where userId=@name";

using (MySqlConnection con = new MySqlConnection(myConnectionString))
{
    using (MySqlCommand cmd = new MySqlCommand(select))
    {
        cmd.CommandType = CommandType.Text;
        cmd.Connection = con;

        cmd.Parameters.AddWithValue("@name", txtValue.Text);                      

        using (MySqlDataReader cursor = cmd.ExecuteReader())
        {
            while (cursor.Read())
            {
                assign = cursor["time"];
            }
        }
    }

    string insert = "INSERT into bluetooth (userId,arm,armNumberDone,armNumber,comDate,assignDate,status) VALUES (@name, @stupid0, @stupid1, @stupid2, @stupid3, @stupid4, @stupid5)";

    using (MySqlCommand cmd = new MySqlCommand(insert))
    {
        cmd.CommandType = CommandType.Text;
        cmd.Connection = con;

        cmd.Parameters.AddWithValue("@stupid0", databaseLine);
        cmd.Parameters.AddWithValue("@stupid1", counter);
        cmd.Parameters.AddWithValue("@stupid2", databaseValue);
        cmd.Parameters.AddWithValue("@stupid3", DateTime.Now);
        cmd.Parameters.AddWithValue("@stupid4", assign);
        cmd.Parameters.AddWithValue("@stupid5", complete);

        cmd.ExecuteNonQuery();
    }
}

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

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