sqlapi 使用心得(三)

 

sqlapi 时间类型的应用

    在项目开发的过程中,有一段时间需求要在数据库中存放时间类型 时间是数据库中经常要存放的数据,Oracle数据库有自己的时间类型,因此我也在官网(www.sqlapi.com)上查找时间类型转换的方法。

Oracle中实践类型为date C语言中也有时间类型 sqlapi使用的时间是一个对象 我是将存放到数据库中这个事务用一个函数完成的

我们看一下时间数据类型,(数据库中的就不说了):

//下面是C语言的数据格式 注意头文件中必须包含<time.h>

struct tm some_tm_Value;   //时间类型结构体 C定义的
time_t t;                            //C基本的时间类型
t=time(NULL);                  

//一下是赋值过程 将本机当前时间localtime(&t)取到的各个数据存放到结构体中

some_tm_Value.tm_hour=localtime(&t)->tm_hour;
some_tm_Value.tm_isdst=localtime(&t)->tm_isdst;
some_tm_Value.tm_mday=localtime(&t)->tm_mday;
some_tm_Value.tm_min=localtime(&t)->tm_min;
some_tm_Value.tm_mon=localtime(&t)->tm_mon;
some_tm_Value.tm_sec=localtime(&t)->tm_sec;
some_tm_Value.tm_wday=localtime(&t)->tm_wday;
some_tm_Value.tm_yday=localtime(&t)->tm_yday;
some_tm_Value.tm_year=localtime(&t)->tm_year;

// SADateTime 是sqlapi的一个类 这个类支持将标准C语言的时间类型结构体直接赋值给这个类的对象

//具体还支持哪些时间类型格式参考:http://www.sqlapi.com/OnLineDoc/DateTime_cnstr.html
SADateTime dtValue = some_tm_Value;

这样 给时间字段赋值是就可以使用cmda.Param().setAsDateTime() = dtValue;赋值了 注意Param()这个中间要加上你需要给哪个变量赋值比如Param(2)

从数据库中取值的时候和上面的方法相反 赋值 但是要注意输出:

SACommand cmd1(&con,"select pressure,dateandtime from d");
try
{
con.Connect("orcl", "hr", "hr", SA_Oracle_Client);
// 执行查询语句
cmd1.Execute();
// 显示查询后的结果

SADateTime dtValue = cmd1.Field("dateandtime");

struct tm tmValue = dtValue;

   while(cmd1.FetchNext())
{
SADateTime dtValue = cmd1.Field("dateandtime");

#ifdef UNICODE
wprintf(L"\t%7s\t%s \n",
cmd1.Field("pressure").asString(),cmd1.Field("dateandtime").asString());

#else
printf("%7s\t%s \n",
cmd1.Field("pressure").asString(),cmd1.Field("dateandtime").asString());
#endif

}

}

上面这段代码只是实现从数据库b中检索出对应的值和时间值 cmd1.Field("dateandtime").asString()这个方法就是将数据库中的字段"dateandtime"的数据读取 并且.asString()方法会将它转换成字符串的形式 以便c语言输出。

      到现在为止,我们可能遇到的问题基本都能有解决的方式了,如果还遇到什么问题请首先向howto@sqlapi.com邮件列表提问,(我们没有购买这个库和相应的 服务,向人家提问问题很不厚道,呵呵) 但是注意:必须使用英文,这个不是我规定的,原因我不用说 了,基本上你白天发的邮件会在晚上或者第二天接到回复,不知道原因问地理老师。

我现在还是学生,所以也不是所有问题都能解决,我也是一个月前才接触sqlapi 获得的知识基本上都是从官方网站上和那个邮件中获得的。我只问了两次,并且两次都有回答,回答的内容还是官网的链接,所以如果可以,尽量从官网上获取信 息。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值