我应用MFC ODBC 做了一个数据库管理系统,可是需要先用access建立一个表,这个程序生成一个exe文件后在别的机器上要运行,就需要都用其它软件先建立这个表,并连接数据源,很麻烦。请问在VC中有什么方法能自己生成数据库,不需其它应用程序先行创建?OLE DB/ADO可以吗?
谢谢!
谢谢!
解决方案 »
- 怎么判定一个线程是否退出?
- 如何把double类型的数据显示到Edit控键中?
- 麻烦大家给我讲讲Document/View?
- 如何让子对话框在点击“回车”后,子对话框不消失?只有点击“退出”按钮,则才关闭自对话框??
- 因广大群众的响应强烈,兄弟我再散分一把~~~~,祝大家合家欢乐,身体健康
- 关于菜单项消息的返回值问题
- 如何初始化分隔条分隔框架窗口大小??
- 救命!请教关于线程间共享socket问题
- vc++网络编程,dubug下没问题,release报错,什么原因?
- 关于何博士去雾算法中的soft matting
- 关于dll 和 串口(请好心人帮忙)
- 请问如何将TreeCtrl里面的Items及其层次关系保存起来
你在论坛上搜索一下有相应的文章。
我实现过。
(1)打开*Dlg.h加入代码:
#include <odbcinst.h>
#pragma comment(lib,"odbccp32.lib") //为了使用ODBC API的函数 SQLConfigDataSource(2)打开StdAfx.h加入代码:
#include <afxdb.h> //以提供对CDatabase 类的支持3.在ResourceView选项卡的Dialog文件夹中
SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,"Microsoft Access Driver (*.mdb)\0",
"DSN=TryMyDB\0DBQ=e:\\dbt\\testdb.mdb\0DEFAULTDIR=e:\\dbt\\0\0"))
//"e:\\dbt\\testdb.mdb"是数据库文件的路径。
m_db.Open(_T("TryMyDB"));//TryMyDB数据源名称
m_set.m_pDatabase=&m_db;
m_set.Open();
…………
m_set.Close();
m_db.Close();
可以创建数据库啊。ACCESS,SQL server 2000都可以啊。
也可以自动创建DSN啊。
用ADO可以建立数据库。
不过我建议软件打包时,把数据库打进去(*.mdb)
不用建立数据源。
vc+ado:
CoInitialize(NULL); using namespace ADOX;
_CatalogPtr m_pCatalog = NULL;
CString strConnection, strTable;
TCHAR chFilePath[MAX_PATH]; GetModuleFileName(NULL,chFilePath,MAX_PATH);
(_tcsrchr(chFilePath, '\\'))[1] = 0;
lstrcat(chFilePath , _T("Test.mdb")); strTable = chFilePath;
strConnection = _T("Provider=Microsoft.JET.OLEDB.4.0;Data source = ") + strTable + _T(";Jet OLEDB:Engine Type=5;"); if(!PathFileExists(chFilePath))
{
try
{
m_pCatalog.CreateInstance(__uuidof(Catalog));
m_pCatalog->Create(_bstr_t(strConnection ));
}
catch(...)
{
m_pCatalog->Release();
m_pCatalog = NULL;
CoUninitialize();
}
m_pCatalog->Release();// m_pCatalog->Release();
// m_pCatalog = NULL;
}
CoUninitialize();
http://www.csdn.net/Develop/read_article.asp?id=25607