各种缴费是根据工资乘以一个参数来计算出来的,我希望在更改了这些参数之后,按一个键,可以更新各个员工某些列的数值...看清楚...是各个员工!!!!!! private void ziliao_Load(object sender, EventArgs e)//程序启动时显示所有参数
{
string sql2 = "select * from xjiaofei";
SqlCommand cmd3 = new SqlCommand(sql2, conn);
conn.Open();
SqlDataReader dr3 = cmd3.ExecuteReader();
while (dr3.Read())
{
xylgr.Text = dr3["养老个人缴费参数"].ToString();
xyldw.Text = dr3["养老单位缴费参数"].ToString();
xybgr.Text = dr3["医保个人缴费参数"].ToString();
xybdw.Text = dr3["医保单位缴费参数"].ToString();
xsygr.Text = dr3["失业个人缴费参数"].ToString();
xsydw.Text = dr3["失业单位缴费参数"].ToString();
xgs.Text = dr3["工伤参数"].ToString();
xsybx.Text = dr3["生育保险参数"].ToString();
}
dr3.Close();
conn.Close();
} private void button7_Click(object sender, EventArgs e)
{
string sql2 = "select gerenziliao.养老缴费工资,gerenziliao.医保缴费工资,gerenziliao.失业缴费工资 from gerenziliao";
SqlCommand cmd4 = new SqlCommand(sql2, conn);
conn.Open();
SqlDataReader dr4 = cmd4.ExecuteReader();
while (dr4.Read())
{
Double a = Math.Round(Convert.ToDouble(dr4["养老缴费工资"].ToString()) * Convert.ToDouble(xylgr.Text), 0);
Double b = Math.Round(Convert.ToDouble(dr4["养老缴费工资"].ToString()) * Convert.ToDouble(xyldw.Text), 0);
Double c = Math.Round(Convert.ToDouble(dr4["医保缴费工资"].ToString()) * Convert.ToDouble(xybgr.Text), 0);
Double d = Math.Round(Convert.ToDouble(dr4["医保缴费工资"].ToString()) * Convert.ToDouble(xybdw.Text), 0);
Double ee = Math.Round(Convert.ToDouble(dr4["失业缴费工资"].ToString()) * Convert.ToDouble(xsygr.Text), 0);
Double f = Math.Round(Convert.ToDouble(dr4["失业缴费工资"].ToString()) * Convert.ToDouble(xsydw.Text), 0);
Double g = Math.Round(Convert.ToDouble(dr4["失业缴费工资"].ToString()) * Convert.ToDouble(xgs.Text), 0);
Double h = Math.Round(Convert.ToDouble(dr4["医保缴费工资"].ToString()) * Convert.ToDouble(xsybx.Text), 0);
string sql = "update gerenziliao set 养老个人缴费=a,养老单位缴费=b,医保个人缴费=c,医保单位缴费=d,失业个人缴费=ee ,失业单位缴费=f,工伤=g,生育保险=h";
try
{
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery(); }
catch (Exception ex)
{
MessageBox.Show(ex.Message); }
}
dr4.Close();
conn.Close();
}
但是每次我一按那个键,就显示说"已有打开的与此连接相关联的DataReader,必须首先将它关闭"...希望得到解答
{
string sql2 = "select * from xjiaofei";
SqlCommand cmd3 = new SqlCommand(sql2, conn);
conn.Open();
SqlDataReader dr3 = cmd3.ExecuteReader();
while (dr3.Read())
{
xylgr.Text = dr3["养老个人缴费参数"].ToString();
xyldw.Text = dr3["养老单位缴费参数"].ToString();
xybgr.Text = dr3["医保个人缴费参数"].ToString();
xybdw.Text = dr3["医保单位缴费参数"].ToString();
xsygr.Text = dr3["失业个人缴费参数"].ToString();
xsydw.Text = dr3["失业单位缴费参数"].ToString();
xgs.Text = dr3["工伤参数"].ToString();
xsybx.Text = dr3["生育保险参数"].ToString();
}
dr3.Close();
conn.Close();
} private void button7_Click(object sender, EventArgs e)
{
string sql2 = "select gerenziliao.养老缴费工资,gerenziliao.医保缴费工资,gerenziliao.失业缴费工资 from gerenziliao";
SqlCommand cmd4 = new SqlCommand(sql2, conn);
conn.Open();
SqlDataReader dr4 = cmd4.ExecuteReader();
while (dr4.Read())
{
Double a = Math.Round(Convert.ToDouble(dr4["养老缴费工资"].ToString()) * Convert.ToDouble(xylgr.Text), 0);
Double b = Math.Round(Convert.ToDouble(dr4["养老缴费工资"].ToString()) * Convert.ToDouble(xyldw.Text), 0);
Double c = Math.Round(Convert.ToDouble(dr4["医保缴费工资"].ToString()) * Convert.ToDouble(xybgr.Text), 0);
Double d = Math.Round(Convert.ToDouble(dr4["医保缴费工资"].ToString()) * Convert.ToDouble(xybdw.Text), 0);
Double ee = Math.Round(Convert.ToDouble(dr4["失业缴费工资"].ToString()) * Convert.ToDouble(xsygr.Text), 0);
Double f = Math.Round(Convert.ToDouble(dr4["失业缴费工资"].ToString()) * Convert.ToDouble(xsydw.Text), 0);
Double g = Math.Round(Convert.ToDouble(dr4["失业缴费工资"].ToString()) * Convert.ToDouble(xgs.Text), 0);
Double h = Math.Round(Convert.ToDouble(dr4["医保缴费工资"].ToString()) * Convert.ToDouble(xsybx.Text), 0);
string sql = "update gerenziliao set 养老个人缴费=a,养老单位缴费=b,医保个人缴费=c,医保单位缴费=d,失业个人缴费=ee ,失业单位缴费=f,工伤=g,生育保险=h";
try
{
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery(); }
catch (Exception ex)
{
MessageBox.Show(ex.Message); }
}
dr4.Close();
conn.Close();
}
但是每次我一按那个键,就显示说"已有打开的与此连接相关联的DataReader,必须首先将它关闭"...希望得到解答
解决方案 »
- Microsoft.DirectX.AudioVideoPlayback 播放视频文件 全屏 问题
- 如何快速获取一个文件夹下的所有文件名,急!!
- 怎么取消子窗体的图标显示?
- 购物车显示不出商品,纠结一年了[加分重发]
- winform 中treeview的问题
- 读取数据库长二进制数据
- 除了Excel.application的方式,还有什么方法能把excel导入sql数据库
- 论坛中统计最高日发贴的算法:很多论坛中都有最高日发贴,发生在哪天.急急急!!!
- xml问题:请问如何在c#里使用XMLDOM来操作xml文档
- C#”devexpress.xtraGrid.Views.Grid.GridView“中不包含Rows的定
- 请高手优化全局钩子代码,是键盘钩子
- 一个窗体问题,大家帮忙看看!
你的错误是因为reader独占了数据库连接conn.
解决方法,新建一个conn执行你的更新. 最好的办法是用一条update语句一次更新所有记录
DataTable dt = new DataTable();
dt.Columns.Add("base", typeof(int));
dt.Columns.Add("param", typeof(float));
dt.Columns.Add("result", typeof(float), "base*param"); //result = base*param; for (int i = 0; i < 10; i++)
{
dt.Rows.Add(i+5,i%10);
}
dataGridView1.DataSource = dt;