不清楚到底是数据库的问题
还是程序的问题诡异的是
也不是次次报错,偶尔可以跑完
public void loaddata()
    {
        for (int i = 0; i < 75; i=i+5)    //线程
        {
Thread myThread = new Thread(delegate() {catchdate(i);});
         myThread.Start();
         }
    }public void  catchdate(int i)        //插入
    {
        OleDbCommand com = new OleDbCommand("insert into log(url) values('http://"+m.Groups[2].Value+"')", conn);
        OleDbDataReader dr = com.ExecuteReader();
        dr.Close();
    }

解决方案 »

  1.   

    jet引擎10几年内就没有升级过,不要使用access。如果你问微软的哪一款数据库适合嵌入式编程,应该使用 SQL Server嵌入式数据库
      

  2.   


    兄弟
    换个 sqlite  行吗?
      

  3.   

    这个和ACCESS和SQLSERVER没有关系的
    主要还是OleDbDataReader的问题
    DataReader是独占的,同一个时间只能有一个DataReader
    加个lock吧lock(this)
    {
    OleDbCommand com = new OleDbCommand("insert into log(url) values('http://"+m.Groups[2].Value+"')", conn);
            OleDbDataReader dr = com.ExecuteReader();
            dr.Close();
    }
      

  4.   

    Access这种文件数据库,磁盘的写入最后都会队列化,多线程也不能提高速度,说不定还会降低速度。
      

  5.   


    insert竟然用了ExecuteReader 
    换成ExecuteNonQuery()吧
      

  6.   

    让兄弟见笑了,没办法,学C#才2天....
    其实我试过 ExecuteNonQuery() ,报错,“无法将类型int隐式转化为.....”
    这两个到现在我也不懂是啥意思
    用着不报错我就懒得管了......
      

  7.   

    public void  catchdate(int i)        //插入
        {
            OleDbCommand com = new OleDbCommand("insert into log(url) values('http://"+m.Groups[2].Value+"')", conn);
          com.ExecuteNonQuery();
        }大概是这样吧
      

  8.   

    兄弟。帮忙推荐个能使的数据库吧。希望能提高效率,但是不要像mysql mssql 那样需要装半天的....
    跪求了!
      

  9.   

    如果是这样的话,我想问问,ACCESS和OleDbCommand支持事务吗?支持多务SQL拼接提交吗?
    可以查查这方面的知识
      

  10.   

    文件式的都是这样,文件式的你也可以试一试Microsoft SQL Server Compact 3.5,我不知道它是不是比Access快,你可以试一下。如果感觉慢,也不用从多线程入手,多半是数据库设计问题。
    数据库采用多线程读写往往不是为了效率主动开多线程去读写,而是服务端的设计,比如异步通信,迫使设计者去对数据库进行多线程读写。