2011-06-26 50 views
3

功能是尋找一個班輪例如如何綁定,並使用ODBC API

SQLRETURN SQLBindParameter(
     SQLHSTMT  StatementHandle, 
     SQLUSMALLINT ParameterNumber, 
     SQLSMALLINT  InputOutputType, 
     SQLSMALLINT  ValueType, 
     SQLSMALLINT  ParameterType, 
     SQLULEN   ColumnSize, 
     SQLSMALLINT  DecimalDigits, 
     SQLPOINTER  ParameterValuePtr, 
     SQLLEN   BufferLength, 
     SQLLEN *  StrLen_or_IndPtr); 

我所看到的單證是混亂插入一個空值到數據庫中。這些參數是否取決於數據類型 我在這裏找到一個示例http://support.microsoft.com/kb/248799 這看起來不適用於DB2。我認爲odbc在數據庫中是一致的。 一個特定的代碼示例會有幫助。

回答

5

它不是一條線本身,而是

SQLLEN ival; 

ret = SQLBindParameter(stmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 100, 0, NULL, 0, &ival); 

/* 
* before execution is called 
*/ 

ival = SQL_NULL_DATA; 

即插入一個NULL值作爲CHAR(100)的數據類型。選擇實際的數據類型以匹配列類型,但重要的是在調用SQLExecute或SQLExecDirect之前將指標值設置爲SQL_NULL_DATA。並確保它在執行點仍然設置爲該值。

+0

This Works。謝謝。只是爲了當數值本身爲NULL時,爲什麼需要提供列的大小。 – user754425

+0

它可能會也可能不需要它。例如,在SQL Server的情況下,SQLBindParameter中的類型信息用於定義參數的類型,在本例中爲varchar(100),那麼當調用execute時,參數的值被設置爲NULL。兩位信息是分開的。你必須記住的是,綁定參數可以在許多SQLExecute調用中重用,每次更改ival,但數據類型保持不變。 –