繁体   English   中英

用c#在2个sql server数据库之间进行数据转换

[英]Data translation between 2 sql server databases with c #

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

我该如何解决这个问题?

错误行: 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);
            }

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

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

尝试更换:

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

和 :

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

暂无
暂无

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

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