用C#向ACCESS数据库中插入数据,最开始能插入成功,但是过了一段时间或者重启ACCESS数据库后,先前插入的数据消失了

VISUS_ 2016-10-19 09:10:22
用C#向ACCESS数据库中插入数据,最开始能插入成功,重启VS后(因为操作数据库都是在调试的时候操作的),先前插入的数据消失了。
...全文
516 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yun710126 2020-02-20
  • 打赏
  • 举报
回复
我想你是把mdb文件加入工程了。把mdb从工程中排除即可。
BitCoffee 2016-10-19
  • 打赏
  • 举报
回复
是不是ACCESS数据库文件被替换了,ACCESS数据库文件属性那里选择的总是复制.
cuyi0 2016-10-19
  • 打赏
  • 举报
回复
两种可能,一:是事务操作,操作失败回滚了。(可能性不大) 二:你的插入操作不是直接插入数据库,而是使用了中间件,暂时保存在对象里面,并没有固化到数据库。 基本就这两种可能吧,可以贴代码看看,数据库操作那块儿的代码。 另外问下你用的是ado.net 、linq to sql还是EF
你隔壁王大爷 2016-10-19
  • 打赏
  • 举报
回复
是不是事务操作的
Justin-Liu 2016-10-19
  • 打赏
  • 举报
回复
没保存吧,或者程序开始的时候有没有清空数据的动作
qq_31070989 2016-10-19
  • 打赏
  • 举报
回复
代码粘贴出来
VISUS_csdn 2016-10-19
  • 打赏
  • 举报
回复
刚刚发现从access中添加也会出这样的问题,保存成功后,过了不久就自动的没有数据了。本来添加了一行信息,然后就变这样了 然后就变这样了 如果有知道的大神,麻烦发我邮箱1183989659@qq.com
VISUS_ 2016-10-19
  • 打赏
  • 举报
回复
引用 5 楼 BitCoffee的回复:
是不是ACCESS数据库文件被替换了,ACCESS数据库文件属性那里选择的总是复制.
这个可能性不太大,应该不是数据库的问题,应该是代码的问题。
VISUS_ 2016-10-19
  • 打赏
  • 举报
回复
引用 4 楼 cuyi0的回复:
两种可能,一:是事务操作,操作失败回滚了。(可能性不大) 二:你的插入操作不是直接插入数据库,而是使用了中间件,暂时保存在对象里面,并没有固化到数据库。 基本就这两种可能吧,可以贴代码看看,数据库操作那块儿的代码。 另外问下你用的是ado.net 、linq to sql还是EF
代码我贴出来了,麻烦帮我看下,可能是什么错误,我重新创建了一个名字一样的内容字段一样的数据库,放在debug目录,还是出现了这个问题,添加进去后,重启数据库,还没有重启VS(按f5运行的)最开始添加进去的数据还是消失了。麻烦了
VISUS_ 2016-10-19
  • 打赏
  • 举报
回复
引用 8 楼 以专业开发人员为伍的回复:
如果你没有在多用户并发操作时测试过这种“进程崩溃”下数据库文件损坏的问题,而是“正常地”退出系统、然后重启,也不应该丢失已经插入完毕的(并且验证过确实查询得到的)记录。因此不需要用正常的思维方式去看程序代码,这是系统级的 bug,不是你的程序的问题。
我只有access数据库,还会连接sal servry数据库的,这个连接字符串都是从网上看到的,具体的原理还不清楚的。您的意思是,我的数据库文件已经损坏了吗?但是好像我从access中插入数据,又可以保存,只限于用C#插入时保存不了。
  • 打赏
  • 举报
回复
如果你没有在多用户并发操作时测试过这种“进程崩溃”下数据库文件损坏的问题,而是“正常地”退出系统、然后重启,也不应该丢失已经插入完毕的(并且验证过确实查询得到的)记录。因此不需要用正常的思维方式去看程序代码,这是系统级的 bug,不是你的程序的问题。
  • 打赏
  • 举报
回复
Jet 文件非常容易损坏。当一个链接没有正常关闭,而是进程崩溃,文件就坏了。当重启,或者你手动修复 mdb 文件,你会看到丢了一段数据,可能10几条记录都丢了。 所以最基本地,不要使用 Jet 数据库。应该使用微软在15年前就用来替换它的 Sql Server Compact 数据库。
VISUS_ 2016-10-19
  • 打赏
  • 举报
回复
我不太确定出问题的代码是哪个模块的,我把几个模块的和数据可的连接代码都贴出来,麻烦大家帮我找下问题。 以下代码的统一的连接字符串为: string strcon = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Environment.CurrentDirectory + "\\JCR.accdb; Persist Security Info=False"; 第一个模块:

 public int sqlMethod( string sql)
        {
            
         
            
                using (OleDbConnection conn = new OleDbConnection(strcon))
                {
                    OleDbCommand comm = new OleDbCommand(sql, conn);
                    conn.Open();
                    OleDbDataAdapter da = new OleDbDataAdapter(comm);
                    DataSet ds = new DataSet();
                    int result = da.Fill(ds, "dt");
                if (result != 0)
                {
                    gridSql.DataSource = ds.Tables["dt"];
                    return result;
                }
                else
                    return 0;

                }
           
        }
sql:sql = "select JCRname as 姓名,JCRbm as 别名,JCRsex as 性别, JCRidenty as 身份证号,JCRJG as 籍贯,JCRsf as 身份 from JCRJBXX where 1=1 "; sql += " and JCRname like '%" + sqlName.Text.Trim() + "%'"; 第二个模块

 using (OleDbConnection conn = new OleDbConnection(strcon))
                {//查询JCRJBXX表中是否有该监测人
                 //    string sqlJCRexist = "select JCRname from JCRJBXX where JCRname='" + jcrname.Text.Trim() + "'";
                    string sql = string.Empty;
                    OleDbCommand comm = new OleDbCommand(sql, conn);
                    try
                    {
                        conn.Open();
                    }
                    catch (Exception ex)
                    {
                        string temp = ex.Message;
                        MessageBox.Show("无法连接数据库\r\n" + temp);
                    }
string inJCRJBXX = "insert into" +
                        " JCRJBXX(JCRcym,JCRnl,JCRbrith,JCRid,JCRname,JCRsex,JCRnation,JCRpolity,JCRLiPla,JCRidenty,JCRphone,JCRbm,JCRfl,JCRjg,JCRsf,JCRfy,JCRzjxy,JCRsxdj,JCRlkdw,JCRjjzk,JCRxz,JCRlkjb,JCRbyyx,JCRhjszd,JCRgzdw,JCRzy,JCRgxry,JCRgddh,JCRbgsdh,JCRyddh,JCRqq,JCRwx,JCRdzyj,JCRgrjl,JCRzpbh)"
                                + "  values('"+JCRCYM .Text.Trim()+"','"+stuAge.ToString()+"','"+birth+"','"+JCRguid+"','" + jcrname.Text.Trim() + "','" + jcrsex.SelectedItem.ToString() + "','" + JCRMZ.SelectedItem.ToString() + "','" + JCRZZMM.SelectedItem.ToString() + "','" + JCRXJZD.Text + "','" + JCRSFZ.Text + "','"
                                + JCRLXDH.Text + "','" + JCRBM.Text.Trim() + "','" + JCRFL.Text.Trim() + "','" + JCRJG.Text.Trim() + "','" + JCRSF.Text.Trim() + "','" + JCRFY.Text.Trim() + "','" + JCRZJXY.Text.Trim() + "','" + JCRSXDJ.Text.Trim() + "','" + JCRLKDW.Text.Trim() + "','" +
                                JCRJJZK.Text.Trim() + "','" + JCRXZ.Text.Trim() + "','" + JCRLKJB.Text.Trim() + "','" + JCRBYYX.Text.Trim() + "','" + JCRHJSZD.Text.Trim() + "','" + JCRGZDW.Text.Trim() + "','" + JCRZY.Text.Trim() + "','" + JCRGXRY.Text.Trim() + "','" + JCRGDDH.Text.Trim()
                              + "','" + JCRBGSDH.Text.Trim() + "','" + JCRYDDH.Text.Trim() + "','" + JCRQQ.Text.Trim() + "','" + JCRWX.Text.Trim() + "','" + JCRDZYJ.Text.Trim() + "','" + JCRGRJL.Text.Trim() + "','0')";


                        try
                        {
                            comm.CommandText = inJCRJBXX;
                            int inResult = comm.ExecuteNonQuery();
                            if (inResult > 0)
                            {
                                //没有照片
                                if (jcrphoto.Image == null)
                                {
                                    MessageBox.Show("添加成功", "提示");

                                }
                                //有照片
                                else
                                {
                                    photoGuid = Guid.NewGuid().ToString();
                                    sql = "update JCRJBXX set JCRzpbh='" + photoGuid + ".jpg" + "' where JCRid='"+JCRguid+"' ";
                                    comm.CommandText = sql;
                                    int result = comm.ExecuteNonQuery();
                                    if (result < 0)
                                        return;
                                    //将图片移动到JCRphoto文件夹
                                    else
                                    {
                                        movePhoto(pathTemp);
                                        MessageBox.Show("添加成功", "提示");
                                    }
                                }
                            }
大概主要的操作数据库的代码就这样,有点乱,还请大家见谅。本人只是一个大二的学生,在自学C#。还请大家帮帮忙。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧