简体   繁体   中英

Data translation between 2 sql server databases with c #

Hi I'm importing lines from one database to another to use the code below but when I get to the datacreation point I get the following exception Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.dll

how do I solve this?

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

C# Code:

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"];

Try replacing :

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

With :

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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