[转]wxODBC(wxWidgets)中使用驱动程序方式打开数据库
wxODBC(wxWidgets)中使用驱动程序方式打开数据库
wxWidgets的文档中都是使用在控制面板/数据源中设定DSN来创建ODBC连接。但是实际上很多小型的应用,只是使用本机的一个Access数据库。而要求使用者学习ODBC的DSN配置明显的增加了软件的使用难度。因此,研究了一下wxforum.org中的帖子,试验成功!范例如下:
wxDbConnectInf *DbConnectInf = NULL; // 定义数据库连接信息指针DB connection information
wxDb *PodDB = NULL; // 定义数据库连接指针Database connection
wxDbTable *table = NULL; // 定义数据表指针Data table to access
DbConnectInf = new wxDbConnectInf(0, wxT(""), wxT(""), wxT(""));//这里定义的内容基本没用,但不定义会报错
PodDB = new wxDb(DbConnectInf->GetHenv());
bool DBfailOnDataTypeUnsupported=!true;//
if(!DB->Open(wxT("DRIVER=Microsoft Access Driver (*.mdb);DBQ=D:\\pod.mdb;UID=admin;"),DBfailOnDataTypeUnsupported))//使用驱动程序的方式打开数据库
{
if (PodDB->IsOpen())
{
// Connection is open, but the initialization of
// datatypes and parameter settings failed
return 0;
}
else
{
// Error opening datasource
//return HandleError(wxT("DB ENV ERROR: Cannot allocate ODBC env handle"));
return 0;
}
}
const wxString tableName = wxT("POD"); //定义要操作的表的名称
const UWORD numTableColumns = 8; //指出POD表中的列数(columns)
//建立到表的连接
table = new wxDbTable(PodDB, tableName, numTableColumns, wxT(""), wxDB_QUERY_ONLY, wxT(""));
//将存放提取数据的变量清空
wxStrcpy(pPodPictureInfo->Title, wxT(""));
......
//定义列的数据格式,和取出的格式。
//此处需要注意的是如果前面指明了numTableColumns为n的话,就一定要定义n条
table->SetColDefs(0, wxT("Pod_Title"), DB_DATA_TYPE_VARCHAR, pPodPictureInfo->Title, SQL_C_WXCHAR, sizeof(pPodPictureInfo->Title), true, true);
......
//打开表
if (!table->Open())
{
//An error occurred opening (setting up) the table"));
}
//限定取出Pod_When列值为1982的行(row)
table->SetWhereClause(wxT("Pod_When = '1982'"));
//按照PodDate字段排序
table->SetOrderByClause(wxT("Pod_Date"));
//根据上面的限定信息执行查询操作
if (!table->Query())
{
return HandleError(wxT("QUERY ERROR: "), table->GetDb());
//return 0;
}
while (table->GetNext())//提取查询到的行
{
wxString msg; // Used for display messages
msg.Printf(wxT("Row #% lu --\nTitle : %s\nPodDate : %s\nWhere : %s\nWhen : %s\nWho : %s\nDisc : %s\nRelated : %s\nPhotoName :%s"),
table->GetRowNum(),
pPodPictureInfo->Title,
pPodPictureInfo->PodDate,
pPodPictureInfo->Where,
pPodPictureInfo->When,
pPodPictureInfo->Who,
pPodPictureInfo->Disc,
pPodPictureInfo->Related,
pPodPictureInfo->PhotoName
);
//检查表操作/现实获取的POD信息
//wxSafeShowMessage(wxT("Pod_wxDbTable Test"),msg);
}
------补充一点------
在SetColDefs中关联的变量不能使用wxString,只能使用wxChar[n]等格式。
struct PodPictrueInfo
{
wxChar Title[100];
......
}
转载于:https://www.cnblogs.com/aooyu/archive/2009/12/23/1630718.html
[转]wxODBC(wxWidgets)中使用驱动程序方式打开数据库相关推荐
- sqlite学习笔记7:C语言中使用sqlite之打开数据库
数据库的基本内容前面都已经说得差点儿相同了.接下看看如何在C语言中使用sqlite. 一 接口 sqlite3_open(const char *filename, sqlite3 **ppDb) 打 ...
- uniCloud云函数中通过传统方式操作数据库的-增删改查
云函数 可以看做java或者php,作为后端服务 cloudfunctions/myCloud/index.js exports.main = async (event, context) => ...
- GVim中以十六进制方式打开文件
在windows下,有时我们想用GVim以十六进制形式来打开一个文件,下面就是不错的方法,将它作为一个右键菜单方式加入: 1. 将"GVim Hex"加入到右键菜单, 将以下内容添 ...
- android 闪光灯程序,如何在Android中以编程方式打开前闪光灯?
在API 23或更高版本中(AndroidM,6.0)打开代码if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { CameraManage ...
- android 打开闪光灯,如何在Android中以编程方式打开前置闪光灯...
对于这个问题,你应该: >检查手电筒是否是 可用与否? >如果是,则关闭/打开 >如果没有,那么根据你的应用,你可以做任何事情 需要. 要检查设备中闪存的可用性: 您可以使用以下内容 ...
- 在备份数据库过程中出现错误, 未能打开数据库‘msdb’, ‘msdb ‘ 数据库处于回避紧急模式!
错误提示: 未能在数据库 'msdb' 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式. 服务器: 消息 3009,级别 16,状态 1,行 1 未能在 msdb 数据库中插 ...
- Swift 中使用 SQLite——打开数据库
关于Swift中使用SQLite,接下来可能会分别从打开.增.删.改.查,几个方面来介绍SQLite的具体使用,这一篇重点介绍一下如何打开. 定义全局数据库访问句柄 /// 全局数据库访问句柄 pri ...
- Android Studio中通过SQLiteDatabase类操作数据库
SQLite是一款轻型的数据库,主要用在嵌入式系统,它占用的资源非常低.SQLite不依赖第三方软件,也不需要安装.数据库中的信息都包含在一个文件中,这个文件可以自由地复制到其它目录或其它机器上. 在 ...
- Tips--tensorboard在win系统中jupyter notebook上打开方式
tensorboard在win系统中jupyter notebook上打开方式 1. 问题描述 2. 解决方法 1. 问题描述 最近疫情吃紧,又没有把Linux本带回家,所以只能用Windows将就着 ...
最新文章
- poj1651(矩阵连乘)
- yolov5 v3.0训练出现KeyError错误
- java多个mapreduce_java – 在hadoop中运行多个MapReduce作业
- CNN 反向传播推导
- JSPServlet相关
- latex数学符号加粗_latex的安装与数学公式的书写
- 使用PageOffice---如何在模板中添加数据区域
- 信用证,保理,支付宝的模式和区别
- lol2.27服务器维护,lol2月27日维护公告
- 武汉申报|2022年洪山区科技企业梯次培育专项资金申报指南
- 一套图 搞懂“时间复杂度”
- 计算机exce常用功能,excel表格的基本操作 电脑基本操作知识(办公室常用).doc
- 常用中文字体的英文名称
- 怎样给公司定义一份完美的maven parent pom 文件
- 集线器、交换机以及路由器异同 + 冲突域和广播域详解
- 【转】3xian之所在
- 150万奖金:首届6G智能无线通信系统大赛正式上线
- 如何用虚拟机VMware安装win10/win7(最详细图解)
- Jquery-获取子元素children,find
- 极限编程(Extreme Programming)—走向极限
热门文章
- unix odbc php 连接sqlserver,Ubuntu下通过unixODBC连接MS SqlServer2005
- spring注解--@Bean
- (C++)A+B 输入输出练习VII 输入包含若干行,每行输入两个整数a和b,由空格分隔。 对于每组输入,输出a和b的和,每行输出后接一个空行。
- 循环map_python函数 map函数—比for还好用的循环
- oracle time格式化比较,ORACLE DATE和TIMESTAMP数据类型的比较(二) (转)
- 如何利用微信小游戏的分包加载机制突破4M代码包体积限制
- SpringMvc+ajax实现文件跨域上传
- 绿盟科技与CCF成立“鲲鹏”科研基金 计划发力5大领域资助16个项目
- #423 Div2 D
- add nodes to the swarm