首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • ASSESS无法插入数据…… [已结贴,结贴人:Roentgen220512]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 15:34:24 楼主
    DoDataBase类内容如下:

    public static DataSet GetDataSet(string sql)
            {
                OleDbConnection conn = new OleDbConnection();
                DataSet ds = new DataSet();
                try
                {
                    conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;Persist Security Info=True;Jet OLEDB:Database Password=7772 ");
                    OleDbDataAdapter sda = new OleDbDataAdapter(sql, conn);
                    sda.Fill(ds);
                    return ds;
                }
                catch (Exception ex)
                {
                    throw (ex);
                }
                finally
                {
                    conn.Close();
                }
            }
            public bool ExecuteSQL(string sql)
            {
                OleDbConnection conn = new OleDbConnection();
                try
                {
                    conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;Persist Security Info=True;Jet OLEDB:Database Password=7772 ");
                    OleDbCommand sqlCmd = new OleDbCommand(sql, conn);
                    conn.Open();
                    sqlCmd.ExecuteNonQuery();
                    return true;
                }
                catch (Exception ex)
                {
                    return false;
                    throw ex;

                }
                finally
                {
                    conn.Close();
                }
            }
            public static OleDbConnection getConnection()
            {
                OleDbConnection conn = new OleDbConnection();
                try
                {
                    {
                        conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;Persist Security Info=True;Jet OLEDB:Database Password=7772 ");
                        conn.Open();
                    }
                    return conn;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                    return null;
                }
            }

    按钮触发事件:
    private void button1_Click(object sender, EventArgs e)
            {
                DoDataBase data = new DoDataBase();
                string sql = "insert into changjia(CJ) values ('" + textBox1.Text + "')";
                bool str = data.ExecuteSQL(sql);
                if (str)
                {
                    MessageBox.Show("添加新厂家成功");
                }
                else
                {
                    MessageBox.Show("添加新厂家失败");
                }
                this.Close();
            }

    显示"添加新厂家成功",插入的数据也可以在程序看到,但是关掉程序数据就没了。也就是没有存入数据库文件中,手动在数据库里面改倒是可以……
    不知道是不是连接字符串写错了
    40  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cpio
    • 等级:
    发表于:2008-06-25 15:45:571楼 得分:0
    怎么可能?是不是因为关了程序后重新打开顺序不对了没注意看你插入的啊?

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ojlovecd
    • 等级:
    发表于:2008-06-25 15:50:502楼 得分:0
    显示"添加新厂家成功"之后,你到数据库查过有没有插入成功吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 15:53:513楼 得分:0
    最好单步调试看数据库代码执行了没有
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 15:56:564楼 得分:0
    写的很规范!
    怎么可能会出错!
    如果是连接字符串的问题,会报错的~
    看看是不是没找对地方~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 15:57:595楼 得分:0
    去数据库里看过了,记录完全没变化……
    关掉程序重新打开,显示的数据还是老样子……
    手动在数据库里面改,重新开程序,数据会跟着变……
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yagebu1983
    • 等级:
    发表于:2008-06-25 16:03:306楼 得分:0
    引用 3 楼 songhtao 的回复:
    最好单步调试看数据库代码执行了没有

    同意!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ojlovecd
    • 等级:
    发表于:2008-06-25 16:04:527楼 得分:2
    显示"添加新厂家成功"之后,如果数据库中记录没有增加,那只能证明是你的代码有问题,加断点看过了吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 16:06:288楼 得分:0
    以前用SQLSEVER写,可以用事件跟踪器查看数据库语句的执行情况,ACCESS有没有类似的东东?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 16:07:409楼 得分:0
    在dataset里面更新了 没有更新至数据源?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 16:16:0610楼 得分:0
    断点看过了,语句执行的过程没有异常,数据库插入的部分也执行了
    真是晕死
    附上一张图,图(3)显示已经插入成功了,但是关掉整个程序,又恢复到图(1)的样子
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 16:17:2211楼 得分:0
    引用 9 楼 yilanwuyu123 的回复:
    在dataset里面更新了 没有更新至数据源?


    也许是,弄不懂,要怎么查?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cpio
    • 等级:
    发表于:2008-06-25 16:22:3712楼 得分:0

    表格里面的数据是怎么出来的?

    没有用到DataSet吧

    把断点设置在ExecuteSQL方法第一行,跟着看是不是执行成功后返回的True

    在返回true时,打开Access看里面有没有内容
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 16:24:1113楼 得分:20
    conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;Persist Security Info=True;Jet OLEDB:Database Password=7772 ");

    从你的代码看完全没有问题

    如果你是在编程环境里添加时 不会真正更新到db1.mdb里的

    我以前也遇到过
    如果你单独执行在debug里的exe文件就会成功。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 16:27:2314楼 得分:10
    调试运行时执行的时debug里的exe和db1.mdb

    当下次调试运行时会把exe重新生成,还会把Application 里的db1.mdb 自动复制到debug里

    所以你应该看不到
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 16:30:1715楼 得分:0
    引用 13 楼 yuxianye1 的回复:
    conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;Persist Security Info=True;Jet OLEDB:Database Password=7772 ");

    从你的代码看完全没有问题

    如果你是在编程环境里添加时 不会真正更新到db1.mdb里的

    我以前也遇到过
    如果你单独执行在debug里的exe文件就会成功。


    还真的是……晕了,为什么会这样?可以改变吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 16:30:4016楼 得分:2
    程序操作的数据文件和你看的那个文件是同一个吗
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 16:33:0417楼 得分:4
    是不是把Access添加到解决方案里面去了?
    那是因为每次你Debug的时候,实际上程序会把你添加的Access拷贝一份到Bin目录下
    ,所以你每次操作完成后打开,看到的仍是之前的。
    操作完成后你可以在Bin目录下的Access里面看到你的操作结果。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 16:33:0818楼 得分:2
    当时遇到这个问题也挺奇怪
    后来就一点一点排除

    找到原因了就
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ojlovecd
    • 等级:
    发表于:2008-06-25 16:33:4819楼 得分:0
    引用 14 楼 yuxianye1 的回复:
    调试运行时执行的时debug里的exe和db1.mdb

    当下次调试运行时会把exe重新生成,还会把Application 里的db1.mdb 自动复制到debug里

    所以你应该看不到


    原来如此,学习了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 16:37:3220楼 得分:0
    谢谢大家,问题解决了,我来结贴了
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved