当前位置:编程学习 > C#/ASP.NET >>

执行Access updata语句后更新不了数据

            string Cmd = "UPDATE ContractInfo SET RemainDays=? WHERE ContractInfoID=?";

            OleDbParameter pa = new OleDbParameter("?", OleDbType.SmallInt);
            OleDbParameter pb = new OleDbParameter("?", OleDbType.SmallInt);
            
            int day = 23;
            int id = 2;

            pa.Value = iday;
            pb.Value = id;

            OleDbParameter[] all = { pa, pb };

            DbHelperOleDb.ExecuteSql(Cmd,all);

执行语句后更新不了数据->求解? access,sql 数据库 --------------------编程问答-------------------- 顶顶,大侠快出来 解救哦 --------------------编程问答-------------------- 占位符用?,那你定义了两个?,怎么知道是哪个呢? --------------------编程问答--------------------
string Cmd = "UPDATE ContractInfo SET RemainDays=@iday WHERE ContractInfoID=@ContractInfoID";
SqlCommand Cmd = new SqlCommand(sb.ToString());
Cmd.Parameters.Add("@iday", SqlDbType.Int).Value = 1;
Cmd.Parameters.Add("@ContractInfoID", SqlDbType.Int).Value = 100;
Cmd.ExecuteNonQuery(Cmd);
--------------------编程问答-------------------- access中的参数是可以这样定义的,是按顺序添加参数 --------------------编程问答-------------------- 这个方法是用来操作 access数据库的
--------------------编程问答-------------------- 如你所愿,我测试了一下,可以修改:
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ab.mdb;Persist Security Info=False"))
            {
                conn.Open();

                OleDbCommand cmd = new OleDbCommand("UPDATE ContractInfo SET RemainDays=? WHERE ContractInfoID=?", conn);
                OleDbParameter[] oleDbParameter = new OleDbParameter[] 
                { 
                    new OleDbParameter("?",OleDbType.SmallInt),
                    new OleDbParameter("?",OleDbType.SmallInt)
                };
                oleDbParameter[0].Value = 23;
                oleDbParameter[1].Value = 2;
                cmd.Parameters.AddRange(oleDbParameter);
                cmd.ExecuteNonQuery();
            }

数据库ab.mdb放在bin/debug目录下。 --------------------编程问答--------------------
 public static int ExecuteSql(string SQLString, params OleDbParameter[] cmdParms)
        {
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                using (OleDbCommand cmd = new OleDbCommand())
                {
                    try
                    {
                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                        int rows = cmd.ExecuteNonQuery();
                        cmd.Parameters.Clear();
                        return rows;
                    }
                    catch (System.Data.OleDb.OleDbException E)
                    {
                        throw new Exception(E.Message);
                    }
                }
            }
        }


这个方法有问题吗?
--------------------编程问答-------------------- 就是 没反应。。。。恨啊,真不如sql2008 --------------------编程问答-------------------- 没看出问题,你可以单步调试看看究竟发生了什么。其实就是个习惯问题,多用用就好了。 --------------------编程问答-------------------- 嗯嗯 我再调调 O(∩_∩)O谢谢你 --------------------编程问答-------------------- 自己坑自己有木有啊。。。。。。数据库放在bin下面。。。。。。。 --------------------编程问答--------------------
引用 11 楼 ufowiner 的回复:
自己坑自己有木有啊。。。。。。数据库放在bin下面。。。。。。。

和调试时生成的exe同一目录,可以不用在代码里写路径啊。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,