前提:   我在一个程序里用了一个access 的数据库。另外一个程序里也有同样的的一个数据库, 1. m_database->Open(L"yaopin","","",-1);  第一个参数“L” 代表什么呢?2. 当我用m_database->Open(L"yaopin","","",-1);连接时,发现居然,访问的是另外一个程序(同一目录)的数据库。这是怎么回事呢?3. 当我用m_database->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ypgl.mdb","","",adModeUnknown);访问时,发现只能读。不能写入数据,这又是怎么回事呢? 
 

解决方案 »

  1.   

    1、L"abc"代表这是一个UNICODE串,"abc"代表ANSI串。2、连接串中最好使用绝对路径的mdb文件,否则系统在当前目录中寻找,当前目录是随时可变的。3、你访问的数据库是不是已经被别的程序写和共享读打开了?如果被别人打开了,再打开就是只读。
      

  2.   

    一楼正解,再给楼主加上一个连接access数据库的完整用法,
    m_database->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\bh.mdb","","",adModeUnknown);
    c:\\bh.mdb是你要打开的access数据库所在的目录
      

  3.   

    谢谢大家的热线, 但我的问题是:1.这个程序是怎么通过 m_database->Open(L"yaopin","","",-1); 去访问一个文件是名为"ypgl.mdb" 的数据库文件? 2. 当我用m_database->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ypgl.mdb","","",adModeUnknown);访问时,发现只能读。不能写入数据,这又是怎么回事呢? 其他地方没有打开这个文件  
      

  4.   

    你检查一下mdb所在目录下是否有一个同名的ldb文件存在,如果是,那么你打开mdb文件时就是只读的。如果确保没有别的程序在使用mdb文件,手工删除掉ldb文件再试。
      

  5.   

    首先,你是用的什么方法访问数据库?? ODBC还是ADO??? yaopin 可以是ODBC的dsn数据源名称..
    另外..查看你的ypgl.mdb文件是不是设置了只读属性导致数据库不能修改??
      

  6.   


    有ldb文件的,但和这个文件没关系, 我用m_database->Open(L"yaopin","","",-1);连接时是可以输入的,而且在哪个包含数据库文件夹里同样也有ldb文件.
      

  7.   

    我是指你的程序运行前是否有ldb文件。因为只有进行写方式打开数据库时就会产生ldb文件。
      

  8.   

    1. m_database->Open(L"yaopin","","",-1);  第一个参数“L” 代表什么呢?表示用unicode编码保存yaopin字符串2. 当我用m_database->Open(L"yaopin","","",-1);连接时,发现居然,访问的是另外一个程序(同一目录)的数据库。这是怎么回事呢?用这种方法访问的是ODBC数据源yaopin所指向的数据库文件,你可以在控制面板->管理工具->数据源中查看yaopin数据源所指向的数据库文件是不是你想要的那个?? 3. 当我用m_database->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ypgl.mdb","","",adModeUnknown);访问时,发现只能读。不能写入数据,这又是怎么回事呢?  
      
    这种方法访问的是当前目录下的ypgl.mdb数据库文件..如果提示只读,你可以看看该文件属性是不是设置了"只读"属性??
      

  9.   

    建议用ADO访问数据库,数据库的路径用决定路径。
    保证程序中打开数据库和关闭数据库成对出现。
    记录集指针不要公用。