将listview中的内容传输到sql数据库c#

问题描述 投票:0回答:2

我正在尝试制作一个小程序,它读取一个txt文件并按我在列表视图中决定的顺序报告所有内容,然后我希望将列表视图的内容(也由500、600行组成)传输到一个 mysql 数据库。这是我尝试使用的代码,但它对我不起作用,当我尝试将字符串传输到数据库时,我收到此错误,在数据库上,列设置为 nvchar (50),你能帮忙吗谢谢我(例如链接图片)

 private void button3_Click(object sender, EventArgs e)
    {

        for (int i = 0; i < listView1.Items.Count; i++)
        {
            string cd = "INSERT INTO dbo.example2(timID,timTipo,timDataTempo,timDataOra,timBadge,timTerId,timVerso,timFlag1,timFlag2,timCampo1,timCampo2,timCampo3,timCampo4,timCampo5,timCampo6,timCampo7,timCampo8,timCampo9,timCampo10,timTasto,upsize_ts,timDataInserimento,timAppScrivente,CodiceErrore) VALUES (@d1,@d2,@d3,@d4,@d5,@d6,@d7,@d8,@d9,@d10,@d11,@d12,@d13,@d14,@d15,@d16,@d17,@d18,@d19,@d20,@d21,@d22,@d23,@d24)";

            OleDbConnection conn = new OleDbConnection(@"Provider=SQLOLEDB;Data Source=SERVER\SQLEXPRESS;Initial Catalog=Timbrautre;UID=prova;PWD=OfficeLine21");
            conn.Open();
            var cmd = new OleDbCommand(cd) { Connection = conn };



            foreach (ListViewItem l in listView1.Items)
            {
                cmd.Parameters.AddWithValue("@d1", l.SubItems[0].Text);
                cmd.Parameters.AddWithValue("@d2", l.SubItems[1].Text);
                cmd.Parameters.AddWithValue("@d3", l.SubItems[2].Text);
                cmd.Parameters.AddWithValue("@d4", l.SubItems[3].Text);
                cmd.Parameters.AddWithValue("@d5", l.SubItems[4].Text);
                cmd.Parameters.AddWithValue("@d6", l.SubItems[5].Text);
                cmd.Parameters.AddWithValue("@d7", l.SubItems[6].Text);
                cmd.Parameters.AddWithValue("@d8", l.SubItems[7].Text);
                cmd.Parameters.AddWithValue("@d9", l.SubItems[8].Text);
                cmd.Parameters.AddWithValue("@d10", l.SubItems[9].Text);
                cmd.Parameters.AddWithValue("@d11", l.SubItems[10].Text);
                cmd.Parameters.AddWithValue("@d12", l.SubItems[11].Text);
                cmd.Parameters.AddWithValue("@d13", l.SubItems[12].Text);
                cmd.Parameters.AddWithValue("@d14", l.SubItems[13].Text);
                cmd.Parameters.AddWithValue("@d15", l.SubItems[14].Text);
                cmd.Parameters.AddWithValue("@d16", l.SubItems[15].Text);
                cmd.Parameters.AddWithValue("@d17", l.SubItems[16].Text);
                cmd.Parameters.AddWithValue("@d18", l.SubItems[17].Text);
                cmd.Parameters.AddWithValue("@d19", l.SubItems[18].Text);
                cmd.Parameters.AddWithValue("@d20", l.SubItems[19].Text);
                cmd.Parameters.AddWithValue("@d21", l.SubItems[20].Text);
                cmd.Parameters.AddWithValue("@d22", l.SubItems[21].Text);
                cmd.Parameters.AddWithValue("@d23", l.SubItems[22].Text);
                cmd.Parameters.AddWithValue("@d24", l.SubItems[23].Text);
                cmd.ExecuteNonQuery();
            }
            conn.Close();
        }
    }
c# database listview connection
2个回答
0
投票

我认为你的问题是sql站点中的数据类型 我的建议是添加这样的参数

 cmd.Parameters.Add("@dateCheck", MySqlDbType.Timestamp).Value = ToCheckTime;
 cmd.Parameters.Add("@orderid", MySqlDbType.Int64).Value = item[1];

不适用于 .AddWithValue

并确保 DBType 正确


0
投票
 private void button3_Click(object sender, EventArgs e)
    {
        string connectionString = "Initial Catalog=Timbrautre;Data Source=(local);Integrated Security=SSPI;";
        using (SqlConnection _con = new SqlConnection(connectionString))
        {
            _con.Open();
            MessageBox.Show("Connection Open  !");

            int i = 0;
            foreach (ListViewItem l in listView1.Items)
            {
                SqlCommand cmd = new SqlCommand("INSERT INTO  dbo.example2 (timID,timTipo,timDataTempo,timDataOra,timBadge,timTerId,timVerso,timFlag1,timFlag2,timCampo1,timCampo2,timCampo3,timCampo4,timCampo5,timCampo6,timCampo7,timCampo8,timCampo9,timCampo10,timTasto,upsize_ts,timDataInserimento,timAppScrivente,CodiceErrore) values('" + l.SubItems[0].Text + "' " + "," + " '" + l.SubItems[1].Text + "'" + "," + " '" + l.SubItems[2].Text + "'" + "," + " '" + l.SubItems[3].Text + "'" + "," + " '" + l.SubItems[4].Text + "'" + "," + " '" + l.SubItems[5].Text + "'" + "," + " '" + l.SubItems[6].Text + "'" + "," + " '" + l.SubItems[7].Text + "'" + "," + " '" + l.SubItems[8].Text + "'" + "," + " '" + l.SubItems[9].Text + "'" + "," + " '" + l.SubItems[10].Text + "'" + "," + " '" + l.SubItems[11].Text + "'" + "," + " '" + l.SubItems[12].Text + "'" + "," + " '" + l.SubItems[13].Text + "'" + "," + " '" + l.SubItems[14].Text + "'" + "," + " '" + l.SubItems[15].Text + "'" + "," + " '" + l.SubItems[16].Text + "'" + "," + " '" + l.SubItems[17].Text + "'" + "," + " '" + l.SubItems[18].Text + "'" + "," + " '" + l.SubItems[19].Text + "'" + "," + " '" + l.SubItems[20].Text + "'" + "," + " '" + l.SubItems[21].Text + "'" + "," + " '" + l.SubItems[22].Text + "'" + "," + " '" + l.SubItems[23].Text + "');", _con);


                cmd.ExecuteNonQuery();

                i++;
            }
            MessageBox.Show("Scritto fino alla Timbratura:" + i.ToString());
            _con.Close();

        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.