请教:mis系统中动态的建立数据库的问题

flyincosmic 2004-08-28 09:56:43
我接手做一个数据库,老实说水平实在不行
我想在系统打开时能够自己建立数据库(就像自己打开access建立一样),然后注册到数据源并使用
请问这样可以吗,怎么实现
我用的是vc+ado+access
我想实现定期自动备份,又如何实现,谢谢了
...全文
61 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kudeet 2004-08-29
  • 打赏
  • 举报
回复
http://access911.net/index.asp

你要的基本上都有
large_small 2004-08-29
  • 打赏
  • 举报
回复
楼主说的提的这些需求都可以通过程序来实现
oyljerry 2004-08-29
  • 打赏
  • 举报
回复
access可以实现自动备份吗
zhaolaoxin 2004-08-29
  • 打赏
  • 举报
回复
gz
Kudeet 2004-08-28
  • 打赏
  • 举报
回复
上面是用ODBC的方法建立ACCESS数据库,用ADO的参考
http://search.csdn.net/Expert/topic/443/443956.xml?temp=.345257

#import "c:\Program Files\Common Files\system\ado\msadox.dll"

ADOX::_CatalogPtr pCatalog(__uuidof(ADOX::Catalog));
_bstr_t str="Provider=Microsoft.Jet.OLEDB.4.0;data source=C:\xxx.mdb";
try
{
pCatalog->Create(str); //创建数据库
}
catch(_com_error &e)
{
//错误处理
}


2
要动态注册用SQLConfigDatasource函数,下面的代码只要修改相应的数据库名就可以用了
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);//得到程序的路径
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind('\\');
sPath=sPath.Left(nPos);
nPos=sPath.ReverseFind('\\');
sPath=sPath.Left(nPos);
CString lpszFile=sPath+"\\lhwy.mdb"; //得到程序目录下的数据库的完整路径
char* szDesc;
int mlen;
szDesc=new char[256];
sprintf(szDesc,"DSN=%s? DESCRIPTION=TOC support source? DBQ=%s? FIL=MicrosoftAccess? DEFAULTDIR=%s??","lhwy",lpszFile,sPath); //形成一个SQLConfigDataSource函数参数串结构
mlen = strlen(szDesc);
for (int i=0; i{
if(szDesc[i]=='?')
szDesc[i] = '\0'; //替换上面串的?为\0,形成一个完整的串
}
if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)szDesc))//注册数据库
AfxMessageBox("SQLConfigDataSource Failed");


3
要备份执行SQL语句backup to 还原用restore from
Kudeet 2004-08-28
  • 打赏
  • 举报
回复
给你几段核心代码看看!
1
动态创建MDB数据库
//获取主程序所在路径,存在sPath中
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind ('\\');
sPath=sPath.Left (nPos);
//默认创建数据名:Demo.mdb,内部表名:DemoTable,表内有二个字段:姓名、年龄
CString lpszFile = sPath + "\\Demo.mdb";
CFileFind fFind;
BOOL bSuccess;
bSuccess=fFind.FindFile(lpszFile);
fFind.Close ();
//是否已有创建好的Demo.mdb文件,没有则创建它
if(!bSuccess)
{
db.Create(lpszFile);
CString SqlCmd = "CREATE TABLE DemoTable(Name VARCHAR(20),Age VARCHAR(3));";
db.Execute(SqlCmd);
//打开已创建的数据表
RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,
"SELECT * FROM DemoTable", 0);
//加入第一个记录,用SQL语句
db.Execute("INSERT INTO DemoTable (Name,Age) VALUES ('xxxxxxxx',26)");
//关闭记录集及库
RecSet.Close();
db.Close();
AfxMessageBox("Access文件写入成功!");
}
else
AfxMessageBox("Demo.mdb数据库已经创建!");

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧