这个程序是关于连接两个不同的数据源中表的复制。但调试的时候有一行出现问题。
代码如下: 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类型。希望高手指点下问题出在哪,最好能写出代码。
感激不尽!!
代码如下: 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类型。希望高手指点下问题出在哪,最好能写出代码。
感激不尽!!
这个就是错误原因,字段Time在数据库中为datetime类型,但你是用 GetString 取值的,所以报错
dr.GetString(3).ToString();这里出问题了