混合pro * c和OCI時,將varchar數據類型的內容複製到文本數據類型的最佳方法是什麼?將varchar複製到文本數據類型
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlda.h>
#include <sqlcpr.h>
#include <sql2oci.h>
#include <sqlca.h>
#include <oci.h>
#define UNAME_LEN 30
#define PWD_LEN 30
varchar username[UNAME_LEN];
varchar password[PWD_LEN];
varchar tnsname[32];
int main(int argc, char **argv) {
if (argc < 3) {
printf("\nUsage: %s username \n",argv[0]);
exit(-1);
}
strncpy((char *) username.arr, argv[1], UNAME_LEN);
username.len = (unsigned short) strlen((char *) username.arr);
strncpy((char *) password.arr, argv[2], PWD_LEN);
password.len = (unsigned short) strlen((char *) password.arr);
strncpy((char *)tnsname.arr, argv[3], 20);
tnsname.len = (unsigned short) strlen((char *) tnsname.arr);
text *uname ;
text *pwd ;
text *connstr;
strncpy (uname, username.arr,UNAME_LEN);
strncpy (pwd, password.arr,PWD_LEN);
strncpy (connstr,tnsname.arr,32);
printf ("username is %s \n",uname);
printf ("password is %s \n",pwd);
printf ("connstr is %s \n",connstr);
return 0;
}
我無法使用strncpy複製內容。 當我運行這個輸出中是
**username is ger
password is ger
connstr is ger**
而我期待輸出爲斯科特老虎ORCL。
因爲我用這些參數運行它。
你是否在'EXEC SQL BEGIN DECLARE SECTION'塊中放置了'username'聲明?就像現在一樣,您聲明瞭一個'UNAME_LEN' varchar數組。 – 2012-02-28 07:13:25
我注意到EXEC SQL BEGIN DECLARE SECTION並不是必需的,因爲它沒有這個問題。問題是當試圖將用戶名複製到uname – 2012-02-28 07:16:20
那麼你必須提供更多關於你的問題的細節......運行時崩潰?編譯器錯誤?鏈接器錯誤?請編輯您的問題以儘可能詳細地添加。 – 2012-02-28 07:21:09