标题:System.Data.OleDb.OleDbException: 无法保存;正被别的用户锁定
只看楼主
情假
Rank: 2
来 自:山东-青岛
等 级:论坛游民
帖 子:45
专家分:19
注 册:2010-7-29
结帖率:100%
已结贴  问题点数:0 回复次数:6 
System.Data.OleDb.OleDbException: 无法保存;正被别的用户锁定
System.Data.OleDb.OleDbException: 无法保存;正被别的用户锁定。 在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) 在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) 在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) 在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) 在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) 在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery() 在 config.RunSql(String str_Sql) 位置 d:\hosting\wwwroot\test3_qingdaoicp_com\htdocs\App_Code\config.cs:行号 101 在 admin_EditCompany.btnedit_Click(Object sender, EventArgs e) 位置 d:\hosting\wwwroot\test3_qingdaoicp_com\htdocs\Admin\EditCompany.aspx.cs:行号 115\
程序代码:
public config()
    {

    }
    public static OleDbConnection CreateConnection()  //数据库连接
    {
        OleDbConnection conn = new OleDbConnection(Globals.ConnectionString);
        conn.Open();
        return conn;
    }
    public static OleDbDataReader GetReader(string str_Sql)
    {
        OleDbConnection conn = CreateConnection();
        OleDbCommand comm = new OleDbCommand(str_Sql, conn);
        OleDbDataReader dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
        return dr;
    }

这个是后台修改数据的。。字数少于1000左右时都不会有问题   字数多了就出这个错
搜索更多相关主题的帖子: Object 用户 
2011-06-20 09:56
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8074
专家分:6657
注 册:2005-11-7
得分:0 
select * from table1 (no lock) where ...
你试试这样得写法

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2011-06-20 10:01
kevintang
Rank: 4
等 级:业余侠客
威 望:9
帖 子:799
专家分:236
注 册:2008-2-14
得分:0 
你是不是 access 数据库打开着! 你关闭你的数据库 再做操作!

编程少年基地——少年编程者的练兵场
http://bcsn.    招聘版主中

2011-06-20 11:32
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8074
专家分:6657
注 册:2005-11-7
得分:0 
才发现楼主用的居然是oledb

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2011-06-20 15:37
情假
Rank: 2
来 自:山东-青岛
等 级:论坛游民
帖 子:45
专家分:19
注 册:2010-7-29
得分:0 
这个是后台的、一般没别人会进、而且修改别的都没问题。   我觉得可能还是那个在线编译器的问题。字太多了就这样。就是不知道怎么解决
2011-06-21 21:04
Issac_abc
Rank: 4
来 自:河南
等 级:业余侠客
威 望:2
帖 子:155
专家分:218
注 册:2010-6-17
得分:0 
   if (conn.State == ConnectionState.Closed || conn.State == ConnectionState.Broken) conn.Open();试下,
2011-06-22 20:35
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2545
专家分:9359
注 册:2007-11-3
得分:20 
分析下应该大致有三个原因
1 解决方法:

     首先判断数据库打开还是关闭

 OleDbConnection conn = this.con();
        if (conn.State != ConnectionState.Open)
        {
            conn.Open();
            OleDbCommand cmd = new OleDbCommand(sql, conn);
            cmd.ExecuteNonQuery();
            conn.Close();
        }
        else
        {
            conn.Close();
        }
跟Access数据库有关系,Access数据库的访问是独占的,所以很容易出现你这个错误。
         原因就是你的页面中,可能有其他代码也访问数据库了,且还没完全释放数据库连接(不仅是这一处代码)。所以造成数据库锁定的问题。

可以考虑将所有的连接语句,全部用上了using(){}构造

判断后即可
2 程序效率太低,然后CPU又不足够快.
新用户使用数据库时或下一次使用数据库时上一次的还没执行完
3 IIS 的问题

[ 本帖最后由 wangnannan 于 2011-6-24 12:39 编辑 ]

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2011-06-24 12:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-343417-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.586360 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved