代码如下:
private void Form1_Load(object sender, EventArgs e)
{
SqlConnection conn1 = new SqlConnection();
SqlConnection conn2 = new SqlConnection();
SqlCommand cmd1 = new SqlCommand();
SqlCommand cmd2 = new SqlCommand();
SqlDataReader dr;
conn1.ConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=History;User ID=sa;Pwd=sa";
conn2.ConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=History2;User ID=sa;Pwd=sa";
cmd1.Connection = conn1;
cmd2.Connection = conn2;
cmd1.CommandText = "SELECT GroupName,State,Point,Time FROM OnOff";
conn1.Open();
dr = cmd1.ExecuteReader();
conn2.Open();
while (dr.Read())
{
string insertString = "INSERT INTO OnOff3( GroupName, State,Point,Time) VALUES ('{0}','{1}','{2}','{3}')";
//问题就在这,最后一个参数提示【无法将类型为“System.DateTime”的对象强制转换为类型“System.String”。】
insertString = string.Format(insertString, dr.GetString(0), dr.GetString(1), dr.GetString(2),dr.GetString(3).ToString());
cmd2.CommandText = insertString;
cmd2.ExecuteNonQuery();
}
dr.Close();
conn1.Close();
conn2.Close();
MessageBox.Show("Inserted Done!");
}
PS:GroupName, State,Point这三个字段在数据库中都为nchar(10)类型,字段Time在数据库中为datetime类型。
希望高手指点下问题出在哪,最好能写出代码。
感激不尽!!
13 个解决方案
#1
字段Time在数据库中为datetime类型
dr.GetString(3).ToString()
dr.GetString(3).ToString()
#2
dr.GetDateTime(3).ToString());
#3
dr.GetString(3).ToString()
=>
dr.GetDateTime(3).ToString("yyyy-MM-dd hh:mm:ss")
=>
dr.GetDateTime(3).ToString("yyyy-MM-dd hh:mm:ss")
#4
dr[3].tostring()
#5
dr.GetDateTime(3).ToString() ??
#6
这个就是错误原因,字段Time在数据库中为datetime类型,但你是用 GetString 取值的,所以报错
#7
试一下是否是
dr.GetString(3).ToString();这里出问题了
dr.GetString(3).ToString();这里出问题了
#8
我网络很差吗?一下子排到这么后面了 悲剧啊
#9
知道了 换成dr.GetDateTime(3)就可以了 谢谢!
#10
正解,其实可以考虑表中时间用字符串类型,要不转换可能比较麻烦
#11
哎 看错你答案啦 多多包含!!哎
#12
哥们 你的答案是正确的 今天我是咋了 今年最失败结贴诞生了 多包含
#13
我也差不多遇到此问题
#1
字段Time在数据库中为datetime类型
dr.GetString(3).ToString()
dr.GetString(3).ToString()
#2
dr.GetDateTime(3).ToString());
#3
dr.GetString(3).ToString()
=>
dr.GetDateTime(3).ToString("yyyy-MM-dd hh:mm:ss")
=>
dr.GetDateTime(3).ToString("yyyy-MM-dd hh:mm:ss")
#4
dr[3].tostring()
#5
dr.GetDateTime(3).ToString() ??
#6
这个就是错误原因,字段Time在数据库中为datetime类型,但你是用 GetString 取值的,所以报错
#7
试一下是否是
dr.GetString(3).ToString();这里出问题了
dr.GetString(3).ToString();这里出问题了
#8
我网络很差吗?一下子排到这么后面了 悲剧啊
#9
知道了 换成dr.GetDateTime(3)就可以了 谢谢!
#10
正解,其实可以考虑表中时间用字符串类型,要不转换可能比较麻烦
#11
哎 看错你答案啦 多多包含!!哎
#12
哥们 你的答案是正确的 今天我是咋了 今年最失败结贴诞生了 多包含
#13
我也差不多遇到此问题