http://expert.csdn.net/Expert/topic/2225/2225928.xml?temp=.2201654

解决方案 »

  1.   

    CString Data,DataPath,dbpath;
    unsigned char temp[255];//接收转化后的连接字符串
    LPSTR ch;//字符串指针相当于char *
    DataPath=GetCurrentDir();//获取当前目录 
    Data=DataPath+"\\test.mdb\b";//假定当前数据库为test.mdb
    dbpath="DSN=test\bDBQ="+Data+"DEFAULTDIR="+DataPath+"\b\b";
    file://构造odbc连接字符串,test为数据源名,非法字符先用\b代替ch=dbpath.c_str();//将AnsiString转化为字符串
    int i=0;
    while(*ch!='\0')//查找并替换非法字符,并装入字符数组
    {if(*ch=='\b')
    *ch='\0';
    temp[i]=*ch;
    ch++;
    i++;
    }
    if(::SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,(LPSTR)"Microsoft Access Driver (*.mdb)\0",(LPSTR)temp))//修改或添加数据源创建SQL SERVER//BCB源码,修改注册表
         TRegistry *Registry = new TRegistry();
         Registry->RootKey = HKEY_LOCAL_MACHINE;
         Registry->OpenKey("\\Software\\ODBC\\ODBC.INI\\ODBC Data Sources",true);
         Registry->WriteString(dsn, "SQL Server");     Registry->OpenKey("\\Software\\ODBC\\ODBC.INI\\"+dsn,true);
         Registry->WriteString("Database",sdb);
         Registry->WriteString("Description",des);
         char Buf[1024];
         GetWindowsDirectory(Buf,1024);
         Registry->WriteString("Driver", String(Buf)+"\\SYSTEM\\SQLSRV32.dll");
         Registry->WriteString("LastUser",suid);
         Registry->WriteString("Server",sserver);     delete Registry;DELPHI源码
    http://www.csdn.net/develop/article/15/15427.shtm
      

  2.   

    注册表中可以找到
    还有这个文件中:ODBC.INI具体程序如上所说,其实没那么复杂……