将数组值写入SQL数据库

时间:2016-10-11 11:13:27

标签: c# mysql sql arrays database

寻找一些帮助,将数组值写入我的sql数据库中的一个表中。 数组已经计算了所有值,我想将这些值插入到我的数据库中。但是当我运行代码时,我收到一条错误消息,指出“MySql.Data.dll中发生了'MySql.Data.MySqlClient.MySqlException'类型的未处理异常

附加信息:参数'@PE'已经定义。“

如果我删除之前的参数,它会对每个参数说明相同。

我不太清楚最新情况,因为我在另一种形式中使用此代码将内容写入数据库并且工作正常!任何帮助都会很棒。

我的代码是,

        {
            string myconnection = "datasource=localhost;port=3306;username=root;password=1234";
            MySqlConnection myconn = new MySqlConnection(myconnection);
            MySqlDataAdapter MyDataAdaptor = new MySqlDataAdapter();
            MyDataAdaptor.SelectCommand = new MySqlCommand("select * lossdatabase.forecasttable;", myconn);
            MySqlCommandBuilder cb = new MySqlCommandBuilder(MyDataAdaptor);
            myconn.Open();


        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }


        string constring = "datasource=localhost;port=3306;username=root;password=1234; ";
        string query = " insert into lossdatabase.forecasttable (PE, Production_Time, Potential) VALUES(@PE, @Production_Time, @Potential;";



        MySqlConnection conLossDB = new MySqlConnection(constring);
        MySqlCommand cmdLossDB = new MySqlCommand(query, conLossDB);


        for (int i=0; i<366; i++)
        {
            cmdLossDB.Parameters.AddWithValue("@PE", textBox2.Text);
            cmdLossDB.Parameters.AddWithValue("@Production_Time", forecast[i,2]);
            cmdLossDB.Parameters.AddWithValue("@Potential", forecast[i,3]);


        }




        MySqlDataReader myReader;
        try
        {
            conLossDB.Open();
            myReader = cmdLossDB.ExecuteReader();
            MessageBox.Show("Forecast Results Saved");


            while (myReader.Read())
            {

            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

1 个答案:

答案 0 :(得分:0)

如果理解了您的代码,那么您需要为数组中的每个元素添加一个新参数。您应该将值添加到for循环中的变量,并在for循环结束后添加参数一次:

MySqlDataReader myReader;
try
{
    conLossDB.Open();
    for (int i = 0; i < 366; i++)
    {
        MySqlCommand cmdLossDB = new MySqlCommand(query, conLossDB);
        cmdLossDB.Parameters.AddWithValue("@PE", textBox2.Text);
        cmdLossDB.Parameters.AddWithValue("@Production_Time", forecast[i, 2]);
        cmdLossDB.Parameters.AddWithValue("@Potential", forecast[i, 3]);
        cmdLossDB.ExecuteNonQuery();
    }

    MessageBox.Show("Forecast Results Saved");

}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

我假设预测是一个字符串数组,您可能需要为不同类型进行强制转换。您还必须修复@Jens和@ David_001指向的错误。