请问大神,在c#中访问 access 数据库,向数据库中插入一条记录。
可以正常工作,没有问题。
但是我发现,记录大概要过2-3秒才能在数据库中被查询到
请问大神一下,怎么能让数据立刻就给更新到数据库中呢?我使用的代码如下,谢谢啊!
string sql = String.Format(@"INSERT INTO QueueInfo (info, updatetime) VALUES ('{0}', '{1}')", info, DateTime.Now.ToString());    // 将信息保存到数据库中
int nRow = m_AccessDb.ExecuteSQLNonquery(sql);
public int ExecuteSQLNonquery(string SQL)
        {
            int nResult = 0;
            OleDbCommand cmd = new OleDbCommand(SQL, Conn);
            try
            {
                nResult = cmd.ExecuteNonQuery();
                
                return nResult;
            }
            catch
            {
                return nResult;
            }
        }

解决方案 »

  1.   

    应该不是没有插入进去,而是不让你在另一会话里立即查询出来而已。Access 不是多用户并发数据库,微软在 Access 上做了诸多限制,可能是为了性能,可能是为了规避风险,也可能是故意为之。你在同一段代码里插入之后,立即查询(不要在 Access 窗口查询),应该能查询出来的。
      

  2.   

    数据插入access 表是没有问题的。
    我想实现的目的。
    在主线程中插入数据,插入数据库后,通知子线程进行查询和处理操作。(之所以要使用数据库,是想方便的进行排序操作。)我在子线程中收到通知后,立刻就访问access 的话,都没有刚插入的数据但是如果我延迟2-3秒,那80%能查询到刚插入的数据如果延迟 5 秒,目前看是 100% 都能查询到刚插入的数据但是延迟 5 秒太长了,不行啊
      

  3.   

    你使用的多线程访问 Access 数据库,那么 Access 认为是多用户了。注意:Access 对多用户支持很差。不要使用线程,使用其他方法查询插入的数据,比如委托通知。
      

  4.   

    建议你更换成sql server 数据库
      

  5.   

    插入方法 加入如下代码再试
    cmd.Dispose();
    conn.Close();