VC++数据库操作-像powerbuilder一样写sql脚本

前言

使用VC++6.0来操作api是非常方便的,但是用来操作数据库就一点不方便了。看着powerbuilder写SQL真的好方便。

想着能用VC使用数据库操作方便一点就好了。

实现

版本一

SQL:

select id,name,birthday from userinfo where rowid = 10;

函数 :

int dbselect(LPCSTR lpSQLText,...)

VC调用:

int id ;

String name;

DateTime dt ;

long rowid = 1001;

dbselect("select id,name,birthday into :i,:s,:d from userinfo where rowid=%d",&id,&name,&dt,rowid)

//版本1.0
/
Transaction::dbinit();
	sqlca.ServerName	= "127.0.0.1,9527";
	sqlca.DataBase		= "NewHis"; 
	sqlca.UserId		= "sa";
	sqlca.PassWord		= "00000";
	sqlca.LoginTime		= 10;
	sqlca.AppName		= "ding..";

    dbconnect(sqlca);
 
 	String strID;
	String strUserID;
	String strUserName;

	int id = 1  ; 
   	dbselect("select id,userid,username  into :s,:s,:d from userinfo where id = %i" ,&strID,&strUserID,&strUserName, id);
// 
	 String strResult; 
	strResult.Format("id:%s user:%s name:%s", strID,strUserID,strUserName);
	cout<< (LPCSTR)strResult<<endl ; 
	
	cout<<"dbcommand:"<<endl;
	
	dbcommand("update userinfo set userid ='%s' where  id  = %d","管理员1",1);


	disconnect(sqlca);

思路:

提取 into .....from 之间的标识符,可以识别变量的类型,

arglist中的参数,按序列传递变量的地址,这样写的方法很简单,但是变量多了,容易出错,容易弄错顺序。

版本2

int dbselect(Addr[] & p,LPCSTR lpSqlText,...)

调用:

int id ;

String name;

DateTime dt ;

Addr a;

a[0].addr = &id;

a[0].type = int;

a[1].addr = &name;

a[1].type = String;

dbselect(a,"select id ,name,birthday from userinfo where rowid=%d",1001)

​

//版本2.0
/
int id  =10; 
 DEF(ADDRINFO,adr);
 VAR(adr,int,iUserId ); //新变量
 VAR(adr,CString,strUserName); 
 REF(adr,int,id); //已有的变量
 dbselect(adr,"select id,name,birth From useirnfo where id =%d",100);

思路:

把参数和类型和变量地址放到数组中addr,这样就可以清楚一点了。

再定义一个宏

#def var(a,t,n)  t n;a.pushargs(t,n);

实际调用 :

var(a,int ,id);

var(a,string,name);

var(a,DateTime,birth)

dbselect(a,"select * from userinfo where rowid = %d",1001)

总结

这是最常用到的SQL调用,这样我可以比较方便的调用SQL,以后有什么好的方法再加以精炼。

 在这里留个备注,好记性不如烂笔头:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

衢州大白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值