因为需要不能用dataadapter更新数据库,所以手动写更新代码。
程序运行不报错,但是数据库无法更新,不知何故。
DataTable update = dt.GetChanges(DataRowState.Modified);
            DateTime begin = DateTime.Now;
            int count_xiugai=0;
            if (update == null)
            {
                MessageBox.Show("你还没输成绩的哇!");
            }
            else
            {
                
                    //count_xiugai = da.Update(update);
                //自编写回数据库代码
                int columnmodifi_num=update.Columns.Count-5;
                int columnindex_num = 5;
                string[] columnmodifi_name = new string[2] ;
                for (int i = 0; i < columnmodifi_num; i++)
                { columnmodifi_name[i] = update.Columns[columnindex_num].ColumnName.ToString();
                columnindex_num = columnindex_num+1;
                }
                int nianjinum=Convert.ToInt32( nianji.Text.Trim());
                
                
                    foreach (DataRow dr in update.Rows)
                    {
                        string udcmd = "update scores_cz set @xueke= " + dr[5].ToString() + " where 考号= " + dr[4].ToString();
                        SqlCommand updatecmd = new SqlCommand(udcmd, conn);
                        
                        //SqlCommand updatecmd=new SqlCommand("update scores_cz set @xueke=77 where 考号=7090001",conn);
                        updatecmd.Parameters.Clear();
                        updatecmd.Parameters.Add(new SqlParameter("@xueke", SqlDbType.NVarChar, 20));
                        //updatecmd.Parameters["@xueke"].Value = "语文A";
                        //updatecmd.Parameters.Add(new SqlParameter("@xueke", SqlDbType.NVarChar));
                        updatecmd.Parameters["@xueke"].Value = columnmodifi_name[0].ToString();
                        count_xiugai=updatecmd.ExecuteNonQuery();
                        
                    
                    
                }

解决方案 »

  1.   

    先确认你的where条件是否正确,是不是update的数据为0,看看ExecuteNonQuery的返回值,或者将sql放到sqlserver中执行看看
      

  2.   

    update为从dt中作过修改的那一部分datatalbe。附:1、updatecmd.ExecuteNonQuery();返回受影响的行为1行。
    2、如果不用@xueke变量,直接用字段名,则成功更新数据库。
      

  3.   

    结果用拼接sql字符串的方法成功了。
    大侠看看,难道我的Parameters 用错了?