zoukankan      html  css  js  c++  java
  • otl中遇到的一些字符数组长度问题

    最近做的项目中对于数据库的操作为了有一个统一的操作,所以采用了otl技术作为中间媒介,当然,由于是用了别人的库,所以还是出现了很多问题。通过对问题进行分析,也形成了一些常用问题的处理方法。

    在用otl绑定otl_stream的字符串或者字符类型变量中,总是会出现Incompatible data types in stream operation这样的错误,也让我苦恼了很久,后来发现是因为对otl_stream绑定变量的定义的不清晰,以下我用插入语句给大家做个分析:

    插入语句中,所写的绑定的字符数组的长度应该实际数组的长度相同(包含'/0'),即比数据库中定义的字符串的长度多以为,因为数据库中不存储末位的''。

    例如:

    1 int f1=123;
    2 char f2[51]="test";
    3 otl_stream os(1,"insert into table(f1,f2) values(:1<int>,:2<char[51]>",db);
    4 os<<f1<<f2;
    5 其中,数据库中f2长度为varchar(50)

    对于otl中要插入char类型,必须指定char的长度,即在otl中对于char类型的操作皆按上述的字符数组的规则,即绑定的长度应为2。否则会出现Incompatible data types in stream operation的错误

    例如:

    1  int f1=123;
    2 char f2='a';
    3 otl_stream os(1,"insert into table(f1,f2) values(:1<int>,:2<char[2]>",db);
    4 os<<f1<<f2;
    5 其中,数据库中f2为varchar(1),即char

    我在项目中的Mysql数据库中定义了无符号的smallint类型,即为C++中的unsigned short,本来是想直接传入的,后来也总是出现Incompatible data types in stream operation的错误,想了下才知道没有理清otl绑定的类型到底有哪些。在otl中,绑定的数值类型有float,double,int,short,bigint,unsigned(32位无符号),详情请看otl_stream流相关绑定变量。所以若用了unsigned short类型,想绑定otl_stream流时,可以先赋值给unsigned int类型,传入时用unsigned接收,则传入正确,即是截取作用。

    转载请注明:http://www.cnblogs.com/fnlingnzb-learner/p/5922673.html

  • 相关阅读:
    五种方式获取文件扩展名-转载未验证
    http状态代码-转载
    求两个时间的日期差-部分
    jsp相对路径解决方案
    OAUI前台设计(二)
    jsp生命周期
    OA办公页面设计
    Redis全局命令及数据结构
    Redis集群简介及部署
    sql中 in到底走不走索引
  • 原文地址:https://www.cnblogs.com/fnlingnzb-learner/p/5922673.html
Copyright © 2011-2022 走看看