请问用ADO怎样创建一个access数据库文件?

virsnow 2005-02-07 04:51:22
请问
1.用ADO怎样创建一个access数据库文件?(test.mdb)
2.假设test.mdb中有三个表,user1,user2,user3.怎样把user1和user2中不同的用户找出,写入user3中去呢?(用ADO)
谢谢?
...全文
630 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang_bluebird 2005-04-05
  • 打赏
  • 举报
回复
mark
virsnow 2005-02-20
  • 打赏
  • 举报
回复
谢谢楼上各位!
virsnow 2005-02-19
  • 打赏
  • 举报
回复
其实第二个问题意思是:
假设test.mdb中有三个表:user1,user2,user3.
怎样把user1.name和user2.name中不同的用户找出,写入user3.name中去呢?(用ADO)
CodeProject-Jerry 2005-02-13
  • 打赏
  • 举报
回复
你的第二个问题说得很不清楚~!

我想你的意思是这样:

INSERT INTO tUser3
SELECT [Name] From tUser1 a Where a.[Name] NOT IN SELECT [Name] From tUser2
真如实观 2005-02-12
  • 打赏
  • 举报
回复
1、用ADOX创建Access数据库。
#include <afx.h>
#include <afxdisp.h>

#pragma warning (disable: 4146)
#import "c:\Program Files\Common Files\system\ado\msadox.dll" no_namespace
#import "c:\Program Files\Common Files\system\ado\msado15.dll" rename("EOF",
"EndOfFile")

#include "icrsint.h"

#pragma warning (default: 4146)

public:
_CatalogPtr m_pCatalog;
bool CreateDatabase(LPCTSTR lpstrCreate);
......
//----------------------------------------------------
bool CMyADOClass::CreateDatabase(LPCTSTR lpstrCreate)
{
try
{
m_pCatalog->Create(_bstr_t(lpstrCreate));
return true;
}
catch(_com_error &e)
{
dump_com_error(e);
return false;
}
}
......
//---------------------------------------------------------
2、表对象可以用ADOX创建(就是_TablePtr和_ColumnPtr)。
也可以用sql语句创建:create table mytablename(id int,thename varchar(12)...);
virsnow 2005-02-07
  • 打赏
  • 举报
回复
我就是不知sql语句怎么写啊,能说祥细点吗?
谢谢!
oyljerry 2005-02-07
  • 打赏
  • 举报
回复
1,用adox创建数据库文件
2,用sql语句,执行
virsnow 2005-02-07
  • 打赏
  • 举报
回复
第二个问题,只要给出sql语句就行了,或给个思路!
virsnow 2005-02-07
  • 打赏
  • 举报
回复
谢谢!还有别的方法吗?
kugou123 2005-02-07
  • 打赏
  • 举报
回复
1.用ADOX

BOOL CPassportDoc::CreateDB(LPCTSTR lpszFile)
{
if(::PathFileExists(lpszFile)){
CString strTemp;
strTemp.Format(IDS_TARGET_EXISTS,lpszFile);
AfxMessageBox(lpszFile);
return FALSE;
}
ADODB::_ConnectionPtr tempConnn;
ADOX::_CatalogPtr pCatalog = NULL;
ADOX::_TablePtr pTable = NULL;
ADOX::_IndexPtr pIndexNew = NULL;
ADOX::_IndexPtr pIndex = NULL;
CString strConnect;
CString strDBPath=lpszFile;
strConnect.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s"),strDBPath);
COleVariant Connect(strConnect);
try{
pCatalog.CreateInstance(_T("ADOX.Catalog"));
pCatalog->Create((LPCTSTR)strConnect);//创建数据库
tempConnn.CreateInstance(_T("ADODB.Connection"));
tempConnn->PutCommandTimeout(30);
tempConnn->PutConnectionTimeout(30);
tempConnn->put_CursorLocation(ADODB::adUseClient);
tempConnn->Open(_bstr_t(strConnect),_bstr_t(),_bstr_t(),ADODB::adConnectUnspecified);
pCatalog->PutActiveConnection(_variant_t((IDispatch *) tempConnn));
pTable.CreateInstance(_T("ADOX.Table"));
pTable->ParentCatalog =pCatalog;
pTable->Name="Passport";
ADOX::ColumnsPtr pCols =pTable->Columns;
pCols->Append(_T("RecordID") ,ADOX::adInteger,0);//自动编号字段
pCols->Append(_T("Name") ,ADOX::adWChar,255);//文本字段
pCols->Append(_T("DateOfBirth") ,ADOX::adDate,0);//日期字段
pCols->Append(_T("OtherInfo"),ADOX::adLongVarWChar,0);//备注字段
pCatalog->Tables->Refresh();
long lCount=pCols->Count;
for(long i=0;i<lCount;i++){
pCols->GetItem(i)->ParentCatalog =pCatalog;//重要!设置Catalog,参见Q201826 PRB: Error 3265 When You Access Properties Collection
ADOX::PropertiesPtr pProperties=pCols->GetItem(i)->Properties;
if(pProperties){//这里是用于调试的属性显示代码
long lp=pProperties->Count;
TRACE("Properties for Col %s\r\n",(LPCTSTR)pCols->GetItem(i)->Name);
for(long j=0;j<lp;j++){
TRACE("\rProperty %s:%s\r\n",g_GetValueString(pProperties->GetItem(j)->Name)
,g_GetValueString(pProperties->GetItem(j)->Value));
}
}
}
pCols->GetItem(_T("RecordID"))->Properties->GetItem(_T("Description"))->Value=_T("记录编号");//注释
pCols->GetItem(_T("RecordID"))->Properties->GetItem(_T("AutoIncrement"))->Value=true;//自动编号
pCols->GetItem(_T("Name"))->Properties->GetItem(_T("Jet OLEDB:Compressed UniCode Strings"))->Value=true;
pCols->GetItem(_T("Name"))->Properties->GetItem(_T("Description"))->Value=_T("姓名");
pCols->GetItem(_T("DateOfBirth"))->Properties->GetItem(_T("Description"))->Value=_T("出生日期");
pCols->GetItem(_T("OtherInfo"))->Properties->GetItem(_T("Jet OLEDB:Compressed UniCode Strings"))->Value=true;
pCols->GetItem(_T("OtherInfo"))->Properties->GetItem(_T("Description"))->Value=_T("其他信息");
pCatalog->Tables->Append(_variant_t ((IDispatch*)pTable));//添加表
pCatalog->Tables->Refresh();//刷新
pIndexNew.CreateInstance(_T("ADOX.Index"));
pIndexNew->Name = "RecordID";//索引名称
pIndexNew->Columns->Append("RecordID",ADOX::adInteger,0);//索引字段
pIndexNew->PutPrimaryKey(-1);//主索引
pIndexNew->PutUnique(-1);//唯一索引
pTable->Indexes->Append(_variant_t ((IDispatch*)pIndexNew));//创建索引
pIndexNew=NULL;
pCatalog->Tables->Refresh();//刷新
return TRUE;
}
catch(_com_error &e){
ESErrPrintProviderError(tempConnn);
ESErrPrintComError(e);
return FALSE;
}
catch(...){
}
return FALSE;
}

4,017

社区成员

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

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