vc的ODBC数据源,连接的问题

2025-03-06 19:31:01
推荐回答(2个)
回答1:

1:
听你这么说,你已经将程序打包了啊。
要是把你的程序拿到没有VC的电脑上,会提示你缺少很多的dll文件。看样子你已经打包了,或者是另外一台电脑上也有 VC。
2:
你出现的问题,楼上已经说了,就是这个原因,数据库程序需要有数据源这个桥梁来连接通信(Access可以不用)。
要想不出现这个问题,也简单啊,在另外一台电脑上,你再创建一个相应的数据源不就可以了吗。用手动就可以,用程序实现也可以。
手动添加数据源太麻烦,程序拿到哪台电脑上就得手动添加一个数据源。
你可以选择在程序中实现,自动添加数据源。这样,只要在另外一台电脑上运行,就在他的电脑上自动创建了一个数据源。
3:实现(自己总结)
/*
头文件:#include //SQLConfigDataSource
函数:CrreateDSN
功能:动态创建数据源
输入参数:CString str 名称
CString strDatabase 数据库的路径
CString strDescription 说明
CString strServer 服务器名称
CString strUID 用户名
int iCount 标识数据库类型, 1表示Access数据库; 2表示SQL Server; 3表示Oracle数据库
返回值: int型
1: 表示创建Access数据源成功
-1: 表示创建Access数据源失败
2: 表示创建SQL Server数据源成功
-2: 表示创建SQL Server数据源失败
3: 表示创建Oracle数据源成功
-3: 表示创建Oracle数据源失败
-4: 表示不支持创建其他类型的数据源
*/
AFX_EXT_CLASS int CrreateDSN(CString str, CString strDatabase, CString strDescription, CString strServer, CString strUID, int iCount)
{
char* Attributes;
int mlen, i;
Attributes=new char[256];
switch(iCount)
{
case 1:
sprintf(Attributes,"DSN=%s! DESCRIPTION=%s! DBQ=%s! FIL=MicrosoftAccess! DEFAULTDIR=D:\\Database!!",
str, strDescription, strDatabase);
mlen = strlen(Attributes);
for (i=0; i {
if (Attributes[i] == '!')
Attributes[i] = '\0';
}
if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)Attributes))
return 1;
else
return -1;
break;
case 2:
sprintf(Attributes,"DSN=%s!Description=%s!server=%s!Database=%s!",
str, strDescription, strServer, strDatabase);
mlen = strlen(Attributes);
for (i=0; i {
if (Attributes[i] == '!')
Attributes[i] = '\0';
}
if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"SQL Server\0",(LPCSTR)Attributes))
return 2;
else
return -2;
break;
case 3:
sprintf(Attributes,"DSN=%s!Description=%s!ServerName=%s!UserID=%s!",
str, strDescription, strServer, strUID);
mlen = strlen(Attributes);
for (i=0; i {
if (Attributes[i] == '!')
Attributes[i] = '\0';
}
if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Oracle in OraHome92\0",(LPCSTR)Attributes))
return 3;
else
return -3;
break;
default:
return -4;
break;
}
}

回答2:

你原来电脑里的数据库在别人的电脑里没有被创建