数据库(mdb)、表、字段的自动创建,以及如何得到数据库中所有表的名字
2008-03-04 17:06
627 查看
首先需要:
#pragma warning (disable: 4146)
#import "c:Program FilesCommon Filessystemadomsadox.dll"
#import "c:Program FilesCommon FilesSystemadomsado15.dll" no_namespace rename("EOF", "adoEOF")
rename("LockTypeEnum", "locktypeenum") rename("DataTypeEnum","datatypeenum")
rename("FieldAttributeEnum","fieldattributeenum") rename("EditModeEnum","editmodeenum")
rename("RecordStatusEnum","recordstatusenum") rename("ParameterDirectionEnum","parameterdirectionenum")
#pragma warning (disable: 4146) // 头尾加入这两句是为了使编译时不出现那一大串warning
创建mdb:
CFileStatus status;
if (!CFile::GetStatus(m_OutputPath,status)) //如果数据库不存在
...{
ADOX::_CatalogPtr pCatalog(__uuidof(ADOX::Catalog));
_bstr_t sql = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" + xxxPathxxx;
try
...{
pCatalog->Create(sql);
}
catch(_com_error &er)
...{
AfxMessageBox(_bstr_t(er.Description()));
return;
}
}
得到数据库中所有的表的名字:
//得到数据库里的所有表名
CArray<CString,CString&> TableNames;
pRecordset = pConnection->OpenSchema(adSchemaTables);
_variant_t vt, vttype;
while (!pRecordset->adoEOF)
...{
vt = pRecordset->GetCollect(_bstr_t("TABLE_NAME"));
vttype = pRecordset->GetCollect(_bstr_t("TABLE_TYPE"));
if (vt.vt!=VT_NULL && vttype.vt!=VT_NULL && _bstr_t(vttype)==_bstr_t("TABLE"))
...{
CString aTable = (char*)_bstr_t(vt);
aTable.TrimRight();
if (!aTable.IsEmpty())
TableNames.Add(aTable);
}
pRecordset->MoveNext();
}
插入一个表并定义里面的字段:
_bstr_t sql = "CREATE TABLE "+ tableName +"(" + fieldname + " char(50))";
// 注意tableName和fieldname不能是含有空格的字符串
try
...{
pConnection->Execute(sql,NULL,adCmdText);
}
catch(_com_error &er)
...{
AfxMessageBox(_bstr_t(er.Description()) + "/n " +sql);
return;
}
#pragma warning (disable: 4146)
#import "c:Program FilesCommon Filessystemadomsadox.dll"
#import "c:Program FilesCommon FilesSystemadomsado15.dll" no_namespace rename("EOF", "adoEOF")
rename("LockTypeEnum", "locktypeenum") rename("DataTypeEnum","datatypeenum")
rename("FieldAttributeEnum","fieldattributeenum") rename("EditModeEnum","editmodeenum")
rename("RecordStatusEnum","recordstatusenum") rename("ParameterDirectionEnum","parameterdirectionenum")
#pragma warning (disable: 4146) // 头尾加入这两句是为了使编译时不出现那一大串warning
创建mdb:
CFileStatus status;
if (!CFile::GetStatus(m_OutputPath,status)) //如果数据库不存在
...{
ADOX::_CatalogPtr pCatalog(__uuidof(ADOX::Catalog));
_bstr_t sql = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" + xxxPathxxx;
try
...{
pCatalog->Create(sql);
}
catch(_com_error &er)
...{
AfxMessageBox(_bstr_t(er.Description()));
return;
}
}
得到数据库中所有的表的名字:
//得到数据库里的所有表名
CArray<CString,CString&> TableNames;
pRecordset = pConnection->OpenSchema(adSchemaTables);
_variant_t vt, vttype;
while (!pRecordset->adoEOF)
...{
vt = pRecordset->GetCollect(_bstr_t("TABLE_NAME"));
vttype = pRecordset->GetCollect(_bstr_t("TABLE_TYPE"));
if (vt.vt!=VT_NULL && vttype.vt!=VT_NULL && _bstr_t(vttype)==_bstr_t("TABLE"))
...{
CString aTable = (char*)_bstr_t(vt);
aTable.TrimRight();
if (!aTable.IsEmpty())
TableNames.Add(aTable);
}
pRecordset->MoveNext();
}
插入一个表并定义里面的字段:
_bstr_t sql = "CREATE TABLE "+ tableName +"(" + fieldname + " char(50))";
// 注意tableName和fieldname不能是含有空格的字符串
try
...{
pConnection->Execute(sql,NULL,adCmdText);
}
catch(_com_error &er)
...{
AfxMessageBox(_bstr_t(er.Description()) + "/n " +sql);
return;
}
相关文章推荐
- 如何得到数据库中所有表字段及字段中文描述
- Myeclipse如何自动创建hibernate以及配置struts2以及数据库表创建映射文件 详解
- 如何得到数据库中所有表字段及字段中文描述
- 如何得到数据库中所有表字段及字段中文描述
- 针对不同数据库,获取当前用户所有有权限查看的表,以及表的创建时间、更新时间、注释等信息,表中字段的相关信息(包含分页实现)
- 如何得到数据库中所有表名 表字段及字段中文描述
- 如何得到数据库中所有表字段及字段中文描述
- 如何得到数据库中所有表字段及字段中文描述
- 如何得到数据库中所有表字段及字段中文描述
- 如何得到数据库中所有表的名字
- 如何得到数据库中所有表名,表字段及字段中文描述
- 如何在关闭数据库链接时,自动关闭由该链接创建的所有Statement
- 得到数据库中所有的表以及表字段
- 如何得到数据库中所有表字段及字段中文描述
- 如何得到数据库中所有表名 表字段及字段中文描述
- 如何得到数据库中所有表名 表字段及字段中文描述
- 如何获得数据库里所有表的名字(SQL+C#)
- postgreSQL-如何查数据库表、字段以及字段类型、注释等信息?
- 如何获得数据库里所有表的名字 推荐
- SQLSERVER 2008 如何获取一个数据库中的所有表的名称、一个表中所有字段的名称