压缩access 数据库 我需要在VC 中使用ADO对于ACCESS数据库进行压缩,网上主要介绍的都是采用ADO控件或JRO在VB中使用,那位能够指点在下如何在vc中实现(不使用控件)。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ADO不能压缩ACCESS数据库吧,至少没见过,但用DAO可以实现,不妨试试 要不就直接调用 winrar 来压缩压缩率比 jro 多的多 是否能提供JRO在VC中的代码? ADO压缩access数据库:1.头文件加一行:#import "C:\PROGRAM FILES\COMMON FILES\System\ado\MSJRO.DLL" no_namespace 2.代码:...try{ IJetEnginePtr jet(__uuidof(JetEngine)); jet->CompactDatabase( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\nwind2.mdb", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\abbc.mdb;" \ "Jet OLEDB:Engine Type=4");}catch(_com_error &e) { ::MessageBox(NULL, (LPCTSTR)e.Description( ), "", MB_OK) ; } 3:其中Jet OLEDB:Engine Type 的值的含义:1: JET102: JET11 3: JET2X4: JET3X5: JET4XOLE DB压缩access数据库代码:#include <objbase.h>#define DBINITCONSTANTS#define INITGUID#include <initguid.h>#include <oledb.h>#include "msjetoledb.h"#include "jetoledb.h" // for IJetCompact interface#include <atldbcli.h>long GetJetEngineType( LPCTSTR src );class OLEINITIALIZE{ bool m_bOleInit;public: OLEINITIALIZE() { m_bOleInit= (CoInitialize(NULL)==S_OK); } ~OLEINITIALIZE() { if (m_bOleInit) CoUninitialize(); }};HRESULT CompactDatabase(LPCTSTR src, LPCTSTR dest){ // Initialize environment must be the first line in your function OLEINITIALIZE oleinit; CDataSource ds; CComPtr<IJetCompact> spJetCompact =NULL; CComPtr<IDBCreateSession> spSession =NULL; HRESULT hr=0; //Specify the source DSO ds.Open(CLSID_JETOLEDB_4_00, src); CDBPropSet propset1(DBPROPSET_DBINIT); propset1.AddProperty(DBPROP_INIT_DATASOURCE, dest); long x = GetJetEngineType( src ); CDBPropSet propset2(DBPROPSET_JETOLEDB_DBINIT); propset2.AddProperty(DBPROP_JETOLEDB_ENGINE, x); CDBPropSet dbsets[2] = { propset1, propset2 }; // Have we connected to the database? ATLASSERT(ds.m_spInit != NULL); hr = ds.m_spInit->QueryInterface(IID_IDBCreateSession, (void**)&spSession); if (FAILED(hr)) return hr; //IJetCompact only supported in Jet 4.0 and above hr = spSession->QueryInterface( __uuidof(IJetCompact), (void**)&spJetCompact); if (FAILED(hr)) return hr; //Delete the destination file if it exists remove(dest); //Ok compact //hr = spJetCompact->Compact(1, &propset); hr = spJetCompact->Compact(1, dbsets); if (FAILED(hr)) return hr; return hr;}long GetJetEngineType( LPCTSTR src ){ HRESULT hr; CDataSource ds; CComBSTR bstrSource; VARIANT vPropValue; // Initialize our variant to VT_I4 and 0. vPropValue.vt = VT_I4; vPropValue.lVal = 0L; // Exit now if source database is null. if( NULL == src ) return 0; // Build connection string for source. bstrSource = L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="; bstrSource += src; bstrSource += L";"; hr = ds.OpenFromInitializationString( bstrSource ); hr = ds.GetProperty( DBPROPSET_JETOLEDB_DBINIT, DBPROP_JETOLEDB_ENGINE, &vPropValue );<BR/><BR/>// Version returned will be one of these values: // // #define JETDBENGINETYPE_UNKNOWN 0x00 // #define JETDBENGINETYPE_JET10 0x01 // #define JETDBENGINETYPE_JET11 0x02 // #define JETDBENGINETYPE_JET2X 0x03 // #define JETDBENGINETYPE_JET3X 0x04 // #define JETDBENGINETYPE_JET4X 0x05 return vPropValue.lVal;} 得到下拉数据窗口的值 怎样获取当前电脑上运行的所有窗口(句柄),以及怎样设置任意一个窗口最前端显示? vc开发excel用什么好 关于VC++与数据库连接的问题 线程模型的问题,欢迎讨论,谢谢指教 有关字体,急!!! 无法夸大缩小界面! 贡献 ADO的异步和同步又什么区别,怎么设置? 火急!!!同样大小的物理字体为什么在98和2000下(相同显示分辨率)显示不一样?怎样解决?很多天没人回答!!谢谢! 发布一个公开源程序的游戏修改器,共享共享 我想做像网络蚂蚁界面上面的图象条,该如何做,有源码吗?
压缩率比 jro 多的多
#import "C:\PROGRAM FILES\COMMON FILES\System\ado\MSJRO.DLL" no_namespace 2.代码:
...
try
{
IJetEnginePtr jet(__uuidof(JetEngine));
jet->CompactDatabase(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\nwind2.mdb",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\abbc.mdb;" \
"Jet OLEDB:Engine Type=4");
}
catch(_com_error &e)
{
::MessageBox(NULL, (LPCTSTR)e.Description( ), "", MB_OK) ;
}
3:其中
Jet OLEDB:Engine Type 的值的含义:
1: JET10
2: JET11
3: JET2X
4: JET3X
5: JET4XOLE DB压缩access数据库代码:#include <objbase.h>#define DBINITCONSTANTS
#define INITGUID#include <initguid.h>
#include <oledb.h>
#include "msjetoledb.h"
#include "jetoledb.h" // for IJetCompact interface
#include <atldbcli.h>long GetJetEngineType( LPCTSTR src );class OLEINITIALIZE
{
bool m_bOleInit;
public:
OLEINITIALIZE()
{
m_bOleInit= (CoInitialize(NULL)==S_OK); }
~OLEINITIALIZE()
{
if (m_bOleInit)
CoUninitialize();
}
};HRESULT CompactDatabase(LPCTSTR src, LPCTSTR dest)
{
// Initialize environment must be the first line in your function
OLEINITIALIZE oleinit; CDataSource ds;
CComPtr<IJetCompact> spJetCompact =NULL;
CComPtr<IDBCreateSession> spSession =NULL;
HRESULT hr=0; //Specify the source DSO
ds.Open(CLSID_JETOLEDB_4_00, src); CDBPropSet propset1(DBPROPSET_DBINIT);
propset1.AddProperty(DBPROP_INIT_DATASOURCE, dest); long x = GetJetEngineType( src );
CDBPropSet propset2(DBPROPSET_JETOLEDB_DBINIT);
propset2.AddProperty(DBPROP_JETOLEDB_ENGINE, x); CDBPropSet dbsets[2] = { propset1, propset2 }; // Have we connected to the database?
ATLASSERT(ds.m_spInit != NULL);
hr = ds.m_spInit->QueryInterface(IID_IDBCreateSession, (void**)&spSession);
if (FAILED(hr))
return hr; //IJetCompact only supported in Jet 4.0 and above
hr = spSession->QueryInterface( __uuidof(IJetCompact), (void**)&spJetCompact);
if (FAILED(hr))
return hr; //Delete the destination file if it exists
remove(dest); //Ok compact
//hr = spJetCompact->Compact(1, &propset);
hr = spJetCompact->Compact(1, dbsets); if (FAILED(hr))
return hr;
return hr;}long GetJetEngineType( LPCTSTR src )
{
HRESULT hr;
CDataSource ds;
CComBSTR bstrSource;
VARIANT vPropValue; // Initialize our variant to VT_I4 and 0.
vPropValue.vt = VT_I4;
vPropValue.lVal = 0L; // Exit now if source database is null.
if( NULL == src ) return 0; // Build connection string for source.
bstrSource = L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
bstrSource += src;
bstrSource += L";"; hr = ds.OpenFromInitializationString( bstrSource );
hr = ds.GetProperty( DBPROPSET_JETOLEDB_DBINIT, DBPROP_JETOLEDB_ENGINE, &vPropValue );<BR/>
<BR/>
// Version returned will be one of these values:
//
// #define JETDBENGINETYPE_UNKNOWN 0x00
// #define JETDBENGINETYPE_JET10 0x01
// #define JETDBENGINETYPE_JET11 0x02
// #define JETDBENGINETYPE_JET2X 0x03
// #define JETDBENGINETYPE_JET3X 0x04
// #define JETDBENGINETYPE_JET4X 0x05
return vPropValue.lVal;}