在下在此先谢过各位大侠,在下纠结了一天了,就是没有发现错误在哪里,而更新数据的功能不可以实现。一:数据库表“jbxxb”,其中的字段“ID”是自动编号,“mc”、“dh”“dz”等是文本格式的。二:app.config中的连接字符串
      <?xml version="1.0" encoding="utf-8" ?>
      <configuration>
      <configSections>
      </configSections>
      <connectionStrings>
      </connectionStrings>
     <appSettings>
     <add key="connString" value="Data Source=App_Data\tsleyyg.mdb"/>
     </appSettings>
    </configuration>
三:数据库连接函数
       public AccessDB()
            {
                string connectionString="";
                connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;";
                connectionString =connectionString + @System.Configuration.ConfigurationSettings.AppSettings["connString"].ToString();
                Conn = new OleDbConnection(connectionString);
                Conn.Open();
            }
四:提交数据函数
    private void YYGSZ_Click(object sender, EventArgs e)
        {
            //提交信息
            string mc_yyg = MC_YYG.Text;
            string dh_yyg = DH_YYG.Text;
            string dz_yyg = DZ_YYG.Text;
            string sql = "UPDATE jbxxb SET mc = '" + mc_yyg + "', dh = '" + dh_yyg + "', dz = '" + dz_yyg + "' WHERE id = 1";
            AccessDB access = new AccessDB();
            int add = access.Execute(sql);
            if (add > 0)
            {
                MessageBox.Show("提交成功", "提示框");
            }
            else
            {
                MessageBox.Show("提交失败", "提示框");
            }
            access.Dispose();
        }
五:SQL命令执行函数
      public int Execute(string str)
            {
                OleDbCommand Comm = new OleDbCommand(str, Conn);
                int R = Comm.ExecuteNonQuery();
                Comm.Dispose();
                return R;
            }
六:释放资源函数
             ///<summary>
            ///释放系统资源,断开与数据库的连接
            ///</summary>
            public void Dispose()
            {
                if (ds != null)
                {
                    ds.Clear();
                }
                if (dt != null)
                {
                    dt.Clear();
                }
                if (Conn != null)
                {
                    Conn.Close();
                }
            }问题:找不到出错的地方,数据无法提交入数据库。“update”中的参数加上"[]"注意一:数据库连接应该没有问题。因为可以从数据库中读取数据。
代码如下:
  private void Qywh_Load(object sender, EventArgs e)
        {
            //初始化信息
            string sql = "select * from jbxxb where id=1";
            AccessDB access = new AccessDB();
            DataTable dt=access.FillDt(sql);
            if(dt!=null&&dt.Rows.Count>0)
            {
            MC_YYG.Text =dt.Rows[0]["mc"].ToString();
            DH_YYG.Text = dt.Rows[0]["dh"].ToString();
            DZ_YYG.Text = dt.Rows[0]["dz"].ToString();
            }
            access.Dispose();        }
注意二:跟数据库文件“tsleyyg.mdb”所在的文件夹的权限有没有关系,它是只读的,但是改不过来。不过该文件夹的属性的安全选项卡中是“完全控制的权限”。而数据库文件“tsleyyg.mdb”不是只读属性。在下纠结了一天了,还请各位大侠多多指教,找出错误的原因

解决方案 »

  1.   

    <add name="accessConnStr" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source= |DataDirectory|a.mdb" providerName="System.Data.OleDb"/>  
    使用OleDbParameter[] parameters = {
            new OleDbParameter("@mc ", OleDbType.VarChar,255),
            new OleDbParameter("@dh", OleDbType.VarChar,255)};
         parameters[0].Value = mc;
    更新看看
    打一断点,得到UPDATE语句
      

  2.   


    谢谢您。
    是不是把<add name="accessConnStr" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source= |DataDirectory|a.mdb" providerName="System.Data.OleDb"/> 加到app.config中就行了。使用OleDbParameter[] parameters = {
      new OleDbParameter("@mc ", OleDbType.VarChar,255),
      new OleDbParameter("@dh", OleDbType.VarChar,255)};
      parameters[0].Value = mc;
    这是什么意思?在下用的数据库是ACCESS啊
      

  3.   

    看了你的
    AccessDB access = new AccessDB();
    int add = access.Execute(sql);
    =======================================
    把你的access.Execute的方法贴出来看看
      

  4.   


    上面有啊:五:SQL命令执行函数
      public int Execute(string str)
      {
      OleDbCommand Comm = new OleDbCommand(str, Conn);
      int R = Comm.ExecuteNonQuery();
      Comm.Dispose();
      return R;
      }
      

  5.   

    update 参数化更新数据库
    OleDbParameter
    主要是update语句
    有很多access数据库操作类
      

  6.   

    做了一下,完全没问题:
    类是这样,我的mdb是放在d:盘的,直接写
    public class AccessDB
    {
        OleDbConnection Conn;
        public AccessDB()
        {
            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\db1.mdb";
            Conn = new OleDbConnection(connectionString);
            Conn.Open();
        }
        public int Execute(string str)
        {
            OleDbCommand Comm = new OleDbCommand(str, Conn);
            int R = Comm.ExecuteNonQuery();
            Comm.Dispose();
            return R;
        }
    }
      

  7.   

    兄台你是否将MDB数据库放进了解决方案中啊?如果是你把它删除就OK乐,因为每次生成的时候VS会将DEBUG中的数据库替换成解决方案中的数据库,这样使我们误以为没更新成功数据库。
      

  8.   


    谢谢你们。就是这样的,其实信息已经改过来了。把mdb文件放在解决方案中了,其实debug下数据库文件已经改变了。真是,呵呵。纠结了一天