使用C#在2个SQL Server数据库之间进行数据转换

时间:2019-03-08 15:06:45

标签: c# sql sql-server

嗨,我正在将行从一个数据库导入到另一个数据库,以使用下面的代码,但是当我到达数据创建点时,我收到了以下抛出的异常 Exception:System中的'System.Data.SqlClient.SqlException'。 Data.dll

我该如何解决?

错误行: myCommand.Parameters.AddWithValue("@DataCreazione",SqlDbType.DateTime).Value = DataCreazione;

C#代码:

string dbserver2 = textBox4.Text;
            string dbname2 = textBox1.Text;
            string dbusername2 = textBox2.Text;
            string dbpassword2 = textBox3.Text;
            SqlConnection conn = new SqlConnection("Data Source=" + dbserver2 + ";Initial Catalog=" + dbname2 + ";User ID=" + dbusername2 + ";Password=" + dbpassword2 + "");
            conn.Open();
            String sql1 = "SELECT IdUtente,Longitudine,Latitudine,Stato,DataCreazione FROM dbo.Marcatura where IdMarcatura > 6661 order by convert(datetime, DataCreazione, 103) ASC";
            SqlCommand cmd = new SqlCommand(sql1, conn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);

            /*DB2*/
            string dbserver = textBox5.Text;
            string dbname = textBox8.Text;
            string dbusername = textBox7.Text;
            string dbpassword = textBox6.Text;

            SqlConnection conn2 = new SqlConnection("Data Source=" + dbserver + ";Initial Catalog=" + dbname + ";User ID=" + dbusername + ";Password=" + dbpassword + "");
            conn2.Open();
            int conta = 0;
            if (dt.Rows.Count != 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    try
                    {
                        int IdUtente = int.Parse(dr["IdUtente"].ToString());
                        decimal Longitudine = decimal.Parse(dr["Longitudine"].ToString());
                        decimal Latitudine = decimal.Parse(dr["Latitudine"].ToString());
                        String Stato = dr["Stato"].ToString();
                        String DataCreazione = dr["DataCreazione"].ToString();
                        // MessageBox.Show("IdUtente: " + IdUtente + "\n Longitudine: " + Longitudine + "\n Latitudine" + Latitudine + "\n Stato: " + Stato + "\n DataCreazione: " + DataCreazione);
                        string queryfinal = "INSERT INTO Marcatura(IdUtente,Longitudine,Latitudine,Stato,DataCreazione) VALUES(@IdUtente,@Longitudine,@Latitudine,@Stato,@DataCreazione)";
                        SqlCommand myCommand = new SqlCommand(queryfinal, conn2);
                        myCommand.Parameters.AddWithValue("@IdUtente", IdUtente);
                        myCommand.Parameters.AddWithValue("@Longitudine", Longitudine);
                        myCommand.Parameters.AddWithValue("@Latitudine", Latitudine);
                        myCommand.Parameters.AddWithValue("@Stato", Stato);
                        myCommand.Parameters.AddWithValue("@DataCreazione", SqlDbType.DateTime).Value = DataCreazione; /* <--- ERROR LINE */
                        myCommand.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
                        conta++;
                    }
                }

                MessageBox.Show("Totale errori: " + conta);
            }

2 个答案:

答案 0 :(得分:0)

如果两个数据库中的DataCreazione都是DateTime列,则可以使用原始值而不将其转换为String

myCommand.Parameters.AddWithValue("@DataCreazione", SqlDbType.DateTime).Value = dr["DataCreazione"];

答案 1 :(得分:0)

尝试替换:

myCommand.Parameters.AddWithValue("@DataCreazione", SqlDbType.DateTime).Value = DataCreazione;

使用:

myCommand.Parameters.AddWithValue("@DataCreazione",Convert.ToDateTime(DataCreazione));