各位大虾好,c#,winform程序中更新数据库数据成功,可是数据库中该字段的值是null。造成此现象的原因有哪些啊?分别怎么解决呢?小妹先行谢谢!!

解决方案 »

  1.   

    呵呵,有很多原因,其中一种可笑的原因是更新的时候使用的连接字符串不对,更新到另外一个数据库里面了,你用Command执行一个Update的sql语句,会返回影响的行数,检查一下这个数字是否大于0,
      

  2.   

        ////获取收费年份
                        MatchCollection mc;
                        String[] results = new String[feeHtml.Length];//获取匹配的字符串
                        int[] matchposition = new int[feeHtml.Length];//获取字符串的所以                    //创建正则对象并初始化
                        Regex r = new Regex(@"第(\d+)年年费");
                        //找出所有匹配项存入集合.
                        mc = r.Matches(feeHtml);
                        // 遍历集合
                        for (int h = 0; h < mc.Count; h++)
                        {
                            // 将集合中的匹配项存入数组.   
                            results[h] = mc[h].Value;
                            //记录匹配项的索引
                            matchposition[h] = mc[h].Index;
                            if (results[h] != null)//倘若有匹配项
                            {
                                feedate = results[h];
                                string cut = feedate.Substring(1, 1);
                                int feeday = Convert.ToInt32(cut);
                                List<int> days = new List<int>();
                                days.Add(feeday);
                                int maxyear = days.Max();//3、取得最大年份
                                string dt = conn.ExecScalar("select apd from data_cn where apn= " + "'" + feeapn + "'").ToString();
                                mm = dt;
                                //4、得到当前专利号的申请日字段并获取年份
                                cndate = Convert.ToInt32(mm.Substring(0, 4));
                                sum = maxyear + cndate;//5、最大年份与申请年份求和
                                cndatefoot = mm.Substring(5, mm.Length - 5);
                                //6、将和数赋值给收费年字段
                                string feeTime = Convert.ToString(sum) + "." + cndatefoot;
                                int num = conn.ExecNon("update data_cn set fee_date= " + "'" + feeTime + "'" + "where apn=" + "'" + feeapn + "'");
                                if (num > 0)
                                {
                                    Console.WriteLine("收费时长更新成功!");
                                }
                                else
                                {
                                    Console.WriteLine("收费时长更新失败!");
                                }                        }
                        }
                        conn.Close();呵呵,num>0的说明sql语句是没有错误的。
      

  3.   

    update data_cn set fee_date= " + "'" + feeTime + "'" + "where apn=" + "'" + feeapn + "'");
    不知道是不是这句话问题。。看看标点符号加的对不对
      

  4.   

    呵呵,现在可以了。谢谢!
    倒是出现新问题了:无法将文件“D:\HHD_CNPatent\HHD_CNPatent\APP_Data\HHD_CNPatent.mdf”复制到“bin\Debug\APP_Data\HHD_CNPatent.mdf”。文件“bin\Debug\APP_Data\HHD_CNPatent.mdf”正由另一进程使用,因此该进程无法访问此文件。 HHD_CNPatent我的程序已经停止调试了,bin下面的那个数据库也断开了啊
      

  5.   

    int num = conn.ExecNon("update data_cn set fee_date= " + "'" + feeTime + "'" + "where apn=" + "'" + feeapn + "'");
    WHERE前面沒有空格int num = conn.ExecNon("update data_cn set fee_date='"+feeTime+"' where apn='"+feeapn+"'");