寻找一些帮助,将数组值写入我的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);
}
答案 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指向的错误。