在一个叫dvbuy的datagridview中里显示有多行数据,现想把这些行的数据都保存到数据库中,我的代码是:
private void btsure_Click(object sender, EventArgs e)
{
SqlCommand objcmd = new SqlCommand("", conn);
objcmd.CommandText = "insert into 开单表" + "(帐单号,餐桌号,项目名称,单价,金额,开单人,开单时间,是否结帐)" + "values" + "(@帐单号,@餐桌号,@项目名称,@单价,@金额,@开单人,@开单时间,@是否结帐)";
for (int i = 0; i < dvbuy.Rows.Count; i++)
{
objcmd.Parameters.Add("@帐单号", SqlDbType.NVarChar);
objcmd.Parameters.Add("@餐桌号", SqlDbType.NVarChar);
objcmd.Parameters.Add("@项目名称", SqlDbType.NVarChar);
objcmd.Parameters.Add("@单价", SqlDbType.NVarChar);
objcmd.Parameters.Add("@金额", SqlDbType.NVarChar);
objcmd.Parameters.Add("@开单人", SqlDbType.NVarChar);
objcmd.Parameters.Add("@开单时间", SqlDbType.NVarChar);
objcmd.Parameters.Add("@是否结帐", SqlDbType.NVarChar);
objcmd.Parameters["帐单号"].Value = dvbuy.Rows[i].Cells[0];
objcmd.Parameters["餐桌号"].Value = dvbuy.Rows[i].Cells[1];
objcmd.Parameters["项目名称"].Value = dvbuy.Rows[i].Cells[2];
objcmd.Parameters["单价"].Value = dvbuy.Rows[i].Cells[3];
objcmd.Parameters["金额"].Value = dvbuy.Rows[i].Cells[4];
objcmd.Parameters["开单人"].Value = dvbuy.Rows[i].Cells[5];
objcmd.Parameters["开单时间"].Value = dvbuy.Rows[i].Cells[6];
objcmd.Parameters["是否结帐"].Value = dvbuy.Rows[i].Cells[7];
}
objcmd.ExecuteNonQuery();
}但在执行事件代码时出现未处理 System.IndexOutOfRangeException
“此 SqlParameterCollection 中未包含带有 ParameterName“帐单号”的 SqlParameter。” 但我明明设置了SQL参数和哦,不知道是什么原因,请高手指教!多谢!!!
private void btsure_Click(object sender, EventArgs e)
{
SqlCommand objcmd = new SqlCommand("", conn);
objcmd.CommandText = "insert into 开单表" + "(帐单号,餐桌号,项目名称,单价,金额,开单人,开单时间,是否结帐)" + "values" + "(@帐单号,@餐桌号,@项目名称,@单价,@金额,@开单人,@开单时间,@是否结帐)";
for (int i = 0; i < dvbuy.Rows.Count; i++)
{
objcmd.Parameters.Add("@帐单号", SqlDbType.NVarChar);
objcmd.Parameters.Add("@餐桌号", SqlDbType.NVarChar);
objcmd.Parameters.Add("@项目名称", SqlDbType.NVarChar);
objcmd.Parameters.Add("@单价", SqlDbType.NVarChar);
objcmd.Parameters.Add("@金额", SqlDbType.NVarChar);
objcmd.Parameters.Add("@开单人", SqlDbType.NVarChar);
objcmd.Parameters.Add("@开单时间", SqlDbType.NVarChar);
objcmd.Parameters.Add("@是否结帐", SqlDbType.NVarChar);
objcmd.Parameters["帐单号"].Value = dvbuy.Rows[i].Cells[0];
objcmd.Parameters["餐桌号"].Value = dvbuy.Rows[i].Cells[1];
objcmd.Parameters["项目名称"].Value = dvbuy.Rows[i].Cells[2];
objcmd.Parameters["单价"].Value = dvbuy.Rows[i].Cells[3];
objcmd.Parameters["金额"].Value = dvbuy.Rows[i].Cells[4];
objcmd.Parameters["开单人"].Value = dvbuy.Rows[i].Cells[5];
objcmd.Parameters["开单时间"].Value = dvbuy.Rows[i].Cells[6];
objcmd.Parameters["是否结帐"].Value = dvbuy.Rows[i].Cells[7];
}
objcmd.ExecuteNonQuery();
}但在执行事件代码时出现未处理 System.IndexOutOfRangeException
“此 SqlParameterCollection 中未包含带有 ParameterName“帐单号”的 SqlParameter。” 但我明明设置了SQL参数和哦,不知道是什么原因,请高手指教!多谢!!!
objcmd.Parameters["帐单号"].Value = dvbuy.Rows[i].Cells[0];
objcmd.Parameters["餐桌号"].Value = dvbuy.Rows[i].Cells[1];
objcmd.Parameters["项目名称"].Value = dvbuy.Rows[i].Cells[2];
objcmd.Parameters["单价"].Value = dvbuy.Rows[i].Cells[3];
objcmd.Parameters["金额"].Value = dvbuy.Rows[i].Cells[4];
objcmd.Parameters["开单人"].Value = dvbuy.Rows[i].Cells[5];
objcmd.Parameters["开单时间"].Value = dvbuy.Rows[i].Cells[6];
objcmd.Parameters["是否结帐"].Value = dvbuy.Rows[i].Cells[7];
objcmd.CommandText = "insert into 开单表" + "(帐单号,餐桌号,项目名称,单价,金额,开单人,开单时间,是否结帐)" + "values" + "(@帐单号,@餐桌号,@项目名称,@单价,@金额,@开单人,@开单时间,@是否结帐)";
for (int i = 0; i < dvbuy.Rows.Count; i++)
{
objcmd. Parameters.Clear(); //加上这句=================================
objcmd.Parameters.Add("@帐单号", SqlDbType.NVarChar);
objcmd.Parameters.Add("@餐桌号", SqlDbType.NVarChar);
objcmd.Parameters.Add("@项目名称", SqlDbType.NVarChar);
objcmd.Parameters.Add("@单价", SqlDbType.NVarChar);
objcmd.Parameters.Add("@金额", SqlDbType.NVarChar);
objcmd.Parameters.Add("@开单人", SqlDbType.NVarChar);
objcmd.Parameters.Add("@开单时间", SqlDbType.NVarChar);
objcmd.Parameters.Add("@是否结帐", SqlDbType.NVarChar);
objcmd.Parameters["@帐单号"].Value = dvbuy.Rows[i].Cells[0];
objcmd.Parameters["@餐桌号"].Value = dvbuy.Rows[i].Cells[1];
objcmd.Parameters["@项目名称"].Value = dvbuy.Rows[i].Cells[2];
objcmd.Parameters["@单价"].Value = dvbuy.Rows[i].Cells[3];
objcmd.Parameters["@金额"].Value = dvbuy.Rows[i].Cells[4];
objcmd.Parameters["@开单人"].Value = dvbuy.Rows[i].Cells[5];
objcmd.Parameters["@开单时间"].Value = dvbuy.Rows[i].Cells[6];
objcmd.Parameters["@是否结帐"].Value = dvbuy.Rows[i].Cells[7];
objcmd.ExecuteNonQuery(); //移动到循环内部==========================
}