VC+ADO动态创建Access数据库

2016-02-19 20:10 13 1 收藏

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享VC+ADO动态创建Access数据库教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - 编程语言 】

ado技术目前已经成为连接数据库的主流技术,下面介绍如何使用ado来动态创建access数据库。

为了使用ado,必须引入微软的两个动态连接库msadox.dll和msado15.dll:

#pragma warning (disable: 4146)

#import "c:Program FilesCommon Filessystemadomsadox.dll"

#import "c:Program FilesCommon Filessystemadomsado15.dll" no_namespace rename("EOF", "EndOfFile")

#pragma warning (default: 4146)

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

将上述代码加入到stdafx.h文件中,由于ado是com组件,因此使用ado之前还要初始化com环境:

CoInitialize(NULL);

下面是一个在access数据库中创建表的sql语句的例子:

create table test
(
nametext(20) WITH COMPRESSION not null,

score decimal(12,4) not null default 0,

ID  smallint not null default 0,

birthday date,

sex char(1),

CONSTRAINT CK_CH_SEX Check(SEX in ('N','V')),

CONSTRAINT PK_ID Primary Key (ID)

);

使用ADOX::CatalogPtr来创建mdb文件:

HRESULT hr = S_OK;

//Set ActiveConnection of Catalog to this string

CString strcnn(_T("Provider=Microsoft.JET.OLEDB.4.0;Data source = d:est.mdb"));

try

{ ADOX::_CatalogPtr m_pCatalog = NULL;

hr = m_pCatalog.CreateInstance(__uuidof (ADOX::Catalog));

if(FAILED(hr))

{_com_issue_error(hr);

}else

{m_pCatalog-Create(_bstr_t(strcnn)); //Create MDB

}
}

catch(_com_error &e)

{

// Notify the user of errors if any.

AfxMessageBox(_T(“error“));

}

创建一个连接对象打开刚刚建立的mdb文件:

_ConnectionPtr g_pConn;

g_pConn.CreateInstance(__uuidof(Connection));

g_pConn-Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:est.mdb;",

"", "", adConnectUnspecified);

下面函数用来执行sql文件中的sql语句:

// Function name : RunSqlScript

// Description: 执行SQL脚本, peckermen@163.com, 2003-09-15

// Return type: BOOL 成功返回TRUE

// Argument : LPCSTR SqlScriptFile SQL脚本文件名

// Argument : char separator SQL 分割符号, 缺省';'

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

// Argument : char RemarkSQL 注释符号, 缺省'-'

BOOL RunSqlScript(LPCSTR SqlScriptFile, char separator = ';', char Remark = '-')

{

BOOL bRet = FALSE;

CFileFind finder;

CString ErrLong;

if (finder.FindFile(SqlScriptFile) == TRUE)

{

CFile fSql;

TCHAR *buffer, *pSQL, *p;

fSql.Open(SqlScriptFile,Cfile&::modeRead);

UINT nFileLength = fSql.GetLength();

buffer = (TCHAR *)malloc((nFileLength + 1) * sizeof(TCHAR));

_tcsnset(buffer, TCHAR('

来源:http://www.tulaoshi.com/n/20160219/1622938.html

延伸阅读
标签: ASP
  HOWTO: Compacting Microsoft Access Database via ADO -------------------------------------------------------------------------------- The information in this article applies to: ActiveX Data Objects (ADO), versions 2.1, 2.5, 2.6 Microsoft OLE DB Provider for Jet, version 4.0 --------------------------------...
原理就是通过枚举数据库中的表的类型,用户建立的表的类型一般是TBALE。所以通过判断当前数据库中表的类型,就可以获取表的名称了。 初始化部分 在stdafx.h中添加: #include icrsint.h #include basetsd.h #include ole2.h #import "c:Program FilesCommon FilesSystemADOmsado15.dll" no_namespace rename("EOF", "EndOfFile")  ...
预备: (1)、引入ADO类 #import "c:program filescommon filessystemadomsado15.dll" no_namespace rename ("EOF", "adoEOF") (2)、初始化COM在MFC中可以用AfxOleInit();非MFC环境中用: CoInitialize(NULL); CoUnInitialize();(3)#import 包含后就可以用3个智能指针了:_ConnectionPtr、_Recor...
本人最近正在进行呼叫中心的座席端和服务器软件开发,座席端登录部分是进行提取主机信息,然后使用SOCKET提交给远程服务器,服务器再在后台数据库中进行查找信息,进行对比,看是否允许座席端主机登录,因为我的电脑中无法安装SQLSERVER,所以 , 后台数据库暂时使用access小型数据库进行代替,到后期可以改为SQLSERVER数据库,,我在后台数据...
一、密码式 给数据库起一个随机复杂的名称,避免被猜到被下载,这种方式在以前很流行,因为大家都对自己的代码很有自信。但随着错误提示对数据库地址的泄露导致数据库被非法下载,这种方式也就越来越少人用了。 二、"#"式 在数据库名称里加上#号,从URL上请求时#是请求地址和请求参数的一个分隔字符,如果知道了数据库名...

经验教程

507

收藏

11
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部