免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4143 | 回复: 1
打印 上一主题 下一主题

db2load 该如何插入多个字段? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-21 19:34 |只看该作者 |倒序浏览
10可用积分
我在使用SQLBindParameter插入批量数据出现问题,参考tbload.c时有两个问题:
1.tbload.c示例上面只输入一个字段,如何处理多个字段呢?
相关的示例代码如下
#define SAMPLE_DATA "varchar data"
#define ARRAY_SIZE 10

/* allocate a buffer to hold data to insert */

  iBufferSize = strlen(SAMPLE_DATA) * ARRAY_SIZE +
                sizeof(SQLINTEGER) * ARRAY_SIZE;

  pTempBuffer = (char *)malloc(iBufferSize);
  memset(pTempBuffer, 0, iBufferSize);

  pColumnData = pTempBuffer;
  pColumnSizes = (SQLINTEGER *)(pColumnData +
                 strlen(SAMPLE_DATA) * ARRAY_SIZE);

/* initialize the array of rows */

  for (iLoop=0; iLoop<ARRAY_SIZE; iLoop++)
  {
    memcpy(pColumnData + iLoop * strlen(SAMPLE_DATA), SAMPLE_DATA,
           strlen((char *)SAMPLE_DATA));
    pColumnSizes[iLoop] = strlen((char *)SAMPLE_DATA);
   }

2.多个字段类型不同应该怎么做呢?

相关的示例代码如下:

/* bind the parameters */

  cliRC= SQLBindParameter(hstmt,
                          1,
                          SQL_PARAM_INPUT,
                          SQL_C_CHAR,
                          SQL_VARCHAR,
                          30,
                          0,
                          (SQLPOINTER)pColumnData,
                          strlen(SAMPLE_DATA),
                          pColumnSizes);
  STMT_HANDLE_CHECK(hstmt, hdbc, cliRC);



/* initialize the array of rows */

  for (iLoop=0; iLoop<ARRAY_SIZE; iLoop++)
  {
    memcpy(pColumnData + iLoop * strlen(SAMPLE_DATA), SAMPLE_DATA,
           strlen((char *)SAMPLE_DATA));
    pColumnSizes[iLoop] = strlen((char *)SAMPLE_DATA);
   }


很急啊,好心人多多帮忙啊!!!谢谢了

论坛徽章:
0
2 [报告]
发表于 2008-10-22 13:20 |只看该作者
第一个问题不知道你说的什么.
先回答你第二个问题,我以前写的程序作为例子供你参考,这段代码是根据数据库里面查询出来的数据类型做相应类型的榜定:
  1. /*SQLBindParameter绑定输入参数*/
  2.             for (i=0;i<colnum;i++)
  3.             {
  4.                     /*制定每个参数对应的类型,达到最高性能*/
  5.                     if (strcmp(tabstat[i].scoltype,"DECIMAL")==0)
  6.                     {
  7.                             rc = SQLBindParameter( hstmt,
  8.                                    i+1,
  9.                                    SQL_PARAM_INPUT,
  10.                                    SQL_C_CHAR,
  11.                                    SQL_DECIMAL,
  12.                                    sizeof(cliArrayData[i].pdata[0]),
  13.                                    0,
  14.                                    cliArrayData[i].pdata,
  15.                                    sizeof(cliArrayData[i].pdata[0]),
  16.                                    NULL
  17.                                  ) ;
  18.                             if (rc!=0)
  19.                             {
  20.                                     printf("Bind Col ERROR:%d !\n",i);
  21.                                     PtErrorMsg(SQL_HANDLE_STMT,hstmt);
  22.                             }
  23.                             else
  24.                             {
  25.                                     printf("COL=%d,TYPE=%s,Bind SUCCESS\n",i,tabstat[i].scoltype);
  26.                             }
  27.                     }
  28.                     if (strcmp(tabstat[i].scoltype,"VARCHAR")==0)
  29.                     {
  30.                             rc = SQLBindParameter( hstmt,
  31.                                    i+1,
  32.                                    SQL_PARAM_INPUT,
  33.                                    SQL_C_CHAR,
  34.                                    SQL_VARCHAR,
  35.                                    sizeof(cliArrayData[i].pdata[0]),
  36.                                    0,
  37.                                    cliArrayData[i].pdata,
  38.                                    sizeof(cliArrayData[i].pdata[0]),
  39.                                    NULL
  40.                                  ) ;
  41.                             if (rc!=0)
  42.                             {
  43.                                     printf("Bind Col ERROR:%d !\n",i);
  44.                                     PtErrorMsg(SQL_HANDLE_STMT,hstmt);
  45.                             }
  46.                             else
  47.                             {
  48.                                     printf("COL=%d,TYPE=%s,Bind SUCCESS\n",i,tabstat[i].scoltype);
  49.                             }
  50.                     }
  51.                     if (strcmp(tabstat[i].scoltype,"CHAR")==0)
  52.                     {
  53.                             rc = SQLBindParameter( hstmt,
  54.                                    i+1,
  55.                                    SQL_PARAM_INPUT,
  56.                                    SQL_C_CHAR,
  57.                                    SQL_CHAR,
  58.                                    sizeof(cliArrayData[i].pdata[0]),
  59.                                    0,
  60.                                    cliArrayData[i].pdata,
  61.                                    sizeof(cliArrayData[i].pdata[0]),
  62.                                    NULL
  63.                                  ) ;
  64.                             if (rc!=0)
  65.                             {
  66.                                     printf("Bind Col ERROR:%d !\n",i);
  67.                                     PtErrorMsg(SQL_HANDLE_STMT,hstmt);
  68.                             }
  69.                             else
  70.                             {
  71.                                     printf("COL=%d,TYPE=%s,Bind SUCCESS\n",i,tabstat[i].scoltype);
  72.                             }
  73.                     }
  74.                     if (strcmp(tabstat[i].scoltype,"DATE")==0)
  75.                     {
  76.                             rc = SQLBindParameter( hstmt,
  77.                                    i+1,
  78.                                    SQL_PARAM_INPUT,
  79.                                    SQL_C_CHAR,
  80.                                    SQL_TYPE_DATE,
  81.                                    sizeof(cliArrayData[i].pdata[0]),
  82.                                    0,
  83.                                    cliArrayData[i].pdata,
  84.                                    sizeof(cliArrayData[i].pdata[0]),
  85.                                    NULL
  86.                                  ) ;
  87.                             if (rc!=0)
  88.                             {
  89.                                     printf("Bind Col ERROR:%d !\n",i);
  90.                                     PtErrorMsg(SQL_HANDLE_STMT,hstmt);
  91.                             }
  92.                             else
  93.                             {
  94.                                     printf("COL=%d,TYPE=%s,Bind SUCCESS\n",i,tabstat[i].scoltype);
  95.                             }
  96.                     }
  97.                     if (strcmp(tabstat[i].scoltype,"TIMESTAMP")==0)
  98.                     {
  99.                             rc = SQLBindParameter( hstmt,
  100.                                    i+1,
  101.                                    SQL_PARAM_INPUT,
  102.                                    SQL_C_CHAR,
  103.                                    SQL_TYPE_TIMESTAMP,
  104.                                    sizeof(cliArrayData[i].pdata[0]),
  105.                                    0,
  106.                                    cliArrayData[i].pdata,
  107.                                    sizeof(cliArrayData[i].pdata[0]),
  108.                                    NULL
  109.                                  ) ;
  110.                             if (rc!=0)
  111.                             {
  112.                                     printf("Bind Col ERROR:%d !\n",i);
  113.                                     PtErrorMsg(SQL_HANDLE_STMT,hstmt);
  114.                             }
  115.                             else
  116.                             {
  117.                                     printf("COL=%d,TYPE=%s,Bind SUCCESS\n",i,tabstat[i].scoltype);
  118.                             }
  119.                     }
  120.             }
  121.             printf("========\nBind COMPLET\n=========\n");        
复制代码

[ 本帖最后由 Law 于 2008-10-22 13:21 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP