此文章主要講述的是DB2數據庫編譯的兩個問題C語言),你如果對DB2數據庫編譯的兩個問題C語言),有興趣的話你就可以點擊以下的文章進行觀看了,希望會給你帶來一些幫助在此方面。
DB2編譯C語言, 編譯, 高手
我現在遇到了DB2編譯的2個問題C語言)
1、按64位編譯
makefile裡db2所鏈接的庫指向64位庫,並且CC參數指明-q64時編譯,
提示"The typedef definition of wchar_t is incompatible with the option wchar_t_size"
經查,就是32位與64位的區別。忽略此錯誤,運行執行程序時,所有關於數據庫的變量(sqlca.sqlcode)
值就是亂值,例如當錯誤碼為-303時,實際應為-303,它的值卻為538976288。
將makefile的庫指向32,並且cc編譯參數修改為-q32時,上面的問題就解決了。
現在按要求必須按64位進行DB2數據庫編譯,我該如何處理,以解決上面的矛盾?
2、類型不匹配
按數據庫表結構,在*.h文件中定義對應的宏,如果結構中有字段類型為int或long時,
當我把變量類型時定義為int時提示如下錯誤:
- The token "int" found in a host variable declaration is not valid
很明顯,該錯誤知int不合法,換個即可。
將所有int型修改long型時則提示:
- The 'long' host variable "fieldnum" is not valid.Use 'sqlint32' instead。
由於現在的機器是64位的,我將long型統一修改為sqlint32或sqlint64,DB2數據庫編譯均通過
但是在執行時,提示錯誤碼為303的錯誤,即類型不匹配:
- SQL0303N A value cannot be assigned to a host variable in the
- SELECT, VALUES, or FETCH statement because the data
- types are not compatible.
h文件中sqlint32型或sqlint64型的變量,在數據庫中定義的類型為int型。
上述的相關內容就是對DB2數據庫編譯的2個問題C語言),DB2高手的請進的描述,希望會給你帶來一些幫助在此方面。