又一个关于导入、调用API函数的问题?高手请进...
ms-help://MS.VSCC/MS.MSDNVS.2052/odbc/htm/odbcsqlbindcol.htm
SQLRETURN SQLBindCol(
SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber,
SQLSMALLINT TargetType,
SQLPOINTER TargetValuePtr,
SQLINTEGER BufferLength,
SQLLEN * StrLen_or_Ind);
//以下是声明中的数据类型在.NET中的对照关系。
using SQLRETURN = System.Int16;
using SQLUSMALLINT = System.UInt16;
using SQLSMALLINT = System.Int16;
using SQLLEN = System.Int64;
using SQLINTEGER = System.Int32;
using SQLHANDLE = System.IntPtr;
using SQLCHAR = System.Char;
using SQLPOINTER = System.IntPtr;
//以下是函数声明(不知对否)
[DllImport("odbc32.dll",EntryPoint="SQLBindCol")]
public static extern SQLRETURN SQLBindCol(
IntPtr StatementHandle,
SQLUSMALLINT ColumnNumber,
SQLSMALLINT TargetType,
SQLPOINTER TargetValuePtr,
SQLINTEGER BufferLength,
ref int StrLen_or_Ind);
//调用
IntPtr szColumnName = IntPtr.Zero;
int cbColumnName = 0;
int STR_LEN = 255;
int SQL_C_CHAR=1;
retcode=SQLBindCol(hstmt, 4, SQL_C_CHAR, szColumnName, STR_LEN, ref cbColumnName);
其中的TargetValuePtr应该为IntPtr。它有时是char[]有时是int,在c#中如何对这种参数进行声明并对其进行存取(不用指针)?不知道我如上的调用方法问题出在哪里?
System.Runtime.InteropServices.Marshal中有一些类似PtrToStringAuto等的函数不知怎么用啊?
我程序中其它部分都没问题,就在这卡住了。变量中总是没有数据,好像就没bind上。