我试图选择然后在表1到表2中插入一个日期时间。我已经成功插入了数据。但是,表2中显示的日期时间为0000-00-00 00:00:00。 idk错误在哪里。有人请帮助我解决这个问题。我为此感到挣扎。这是选择然后插入的正确方法吗? (从表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();
}
答案 0 :(得分:1)
请尝试这个
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();
}
}
答案 1 :(得分:0)
cmd.Parameters.AddWithValue("@stupid3", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"));
cmd.Parameters.AddWithValue("@stupid4", GetDateString(assign));
具有这样的方法:
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;
}
}
答案 2 :(得分:0)
您需要使用.ExecuteReader()
和.Read()
移至结果集中的每一行。如果您确定将返回确切的一行,请改用.ExecuteScalar()
。研究两者在网上的区别。以下是使用.ExecuteReader()
的示例。
我还重写了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();
}
}