ref DecDigits, ref Nullable);
if ((ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo))
throw new OdbcException (new OdbcError ("SQLDescribeCol", OdbcHandleType.Stmt, hstmt));
- colname = System.Text.Encoding.Default.GetString (colname_buffer);
- colname = colname.Replace ((char) 0, ' ').Trim ();
+ colname = RemoveTrailingNullChar (Encoding.Unicode.GetString (colname_buffer));
OdbcColumn c = new OdbcColumn (colname, (SQL_TYPE) dt);
c.AllowDBNull = (Nullable != 0);
c.Digits = DecDigits;
#endif // NET_2_0
string GetDataTypeName (int index)
{
- return GetColumn (index).OdbcType.ToString ();
+ return GetColumnAttributeStr (index + 1, FieldIdentifier.TypeName);
}
public DateTime GetDate (int ordinal) {
ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, ref long_data, 0, ref outsize);
DataValue = long_data;
break;
+ case OdbcType.NChar:
+ bufsize = 255;
+ buffer = new byte [bufsize];
+ ret = libodbc.SQLGetData (hstmt, ColIndex, SQL_C_TYPE.WCHAR, buffer, bufsize, ref outsize);
+ if (outsize != (int) OdbcLengthIndicator.NullData)
+ if (!(ret == OdbcReturn.SuccessWithInfo
+ && outsize == (int) OdbcLengthIndicator.NoTotal))
+ DataValue = Encoding.Unicode.GetString (buffer, 0, outsize);
+ break;
case OdbcType.NText:
case OdbcType.NVarChar:
bufsize = (col.MaxLength < 127 ? (col.MaxLength*2+1) : 255);
buffer = new byte[bufsize]; // According to sqlext.h, use SQL_CHAR for both char and varchar
StringBuilder sb = new StringBuilder ();
- do {
+ do {
ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, buffer, bufsize, ref outsize);
if (ret == OdbcReturn.Error)
break;
// Fix for strance ODBC drivers (like psqlODBC)
if (ret == OdbcReturn.Success && outsize==-1)
ret = OdbcReturn.NoData;
+
if (ret != OdbcReturn.NoData && outsize > 0) {
+ string value = null;
+
if (outsize < bufsize)
- sb.Append (System.Text.Encoding.Unicode.GetString(buffer,0,outsize));
+ value = Encoding.Unicode.GetString (buffer, 0, outsize);
else
- sb.Append (System.Text.Encoding.Unicode.GetString(buffer,0,bufsize));
+ value = Encoding.Unicode.GetString (buffer, 0, bufsize);
+
+ sb.Append (RemoveTrailingNullChar (value));
}
} while (ret != OdbcReturn.NoData);
DataValue = sb.ToString ();
hstmt));
string value = string.Empty;
if (outsize > 0)
- value = Encoding.Default.GetString (buffer, 0, outsize);
+ value = Encoding.Unicode.GetString (buffer, 0, outsize);
return value;
}
return NextRow ();
}
+ static string RemoveTrailingNullChar (string value)
+ {
+ return value.TrimEnd ('\0');
+ }
+
#endregion
}
}
}
}
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLAllocHandle (
OdbcHandleType HandleType,
IntPtr InputHandle,
ref IntPtr OutputHandlePtr);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLSetEnvAttr (
IntPtr EnvHandle,
OdbcEnv Attribute,
IntPtr Value,
int StringLength);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLConnect (
IntPtr ConnectionHandle,
string ServerName,
string Authentication,
short NameLength3);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLDriverConnect (
IntPtr ConnectionHandle,
IntPtr WindowHandle,
ref short StringLength2Ptr,
ushort DriverCompletion);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLExecDirect (
IntPtr StatementHandle,
string StatementText,
int TextLength);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLRowCount (
IntPtr StatementHandle,
ref int RowCount);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLNumResultCols (
IntPtr StatementHandle,
ref short ColumnCount);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLFetch (
IntPtr StatementHandle);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLGetData (
IntPtr StatementHandle,
ushort ColumnNumber,
int BufferLen,
ref int Len);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLGetData (
IntPtr StatementHandle,
ushort ColumnNumber,
int BufferLen,
ref int Len);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLGetData (
IntPtr StatementHandle,
ushort ColumnNumber,
int BufferLen,
ref int Len);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLGetData (
IntPtr StatementHandle,
ushort ColumnNumber,
int BufferLen,
ref int Len);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLGetData (
IntPtr StatementHandle,
ushort ColumnNumber,
ref float TargetPtr,
int BufferLen,
ref int Len);
-
- [DllImport("odbc32.dll")]
+
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLGetData (
IntPtr StatementHandle,
ushort ColumnNumber,
int BufferLen,
ref int Len);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLGetData (
IntPtr StatementHandle,
ushort ColumnNumber,
ref int TargetPtr,
int BufferLen,
ref int Len);
-
- [DllImport("odbc32.dll")]
+
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLGetData (
IntPtr StatementHandle,
ushort ColumnNumber,
int BufferLen,
ref int Len);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLDescribeCol (
IntPtr StatementHandle,
ushort ColumnNumber,
ref short DecimalDigits,
ref short Nullable);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLFreeHandle (
ushort HandleType,
IntPtr SqlHandle);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLDisconnect (
IntPtr ConnectionHandle);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLPrepare (
IntPtr StatementHandle,
string Statement,
int TextLength);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLExecute (
IntPtr StatementHandle);
- [DllImport ("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLGetConnectAttr (
IntPtr ConnectionHandle,
OdbcConnectionAttribute Attribute,
int BufferLength,
out int StringLength);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLSetConnectAttr (
IntPtr ConnectionHandle,
OdbcConnectionAttribute Attribute,
IntPtr Value,
int Length);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLEndTran (
int HandleType,
IntPtr Handle,
short CompletionType);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLBindParameter (
IntPtr StatementHandle,
ushort ParamNum,
int BufLen,
IntPtr StrLen);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLCancel (
IntPtr StatementHandle);
-
- [DllImport("odbc32.dll")]
+
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLCloseCursor (
IntPtr StatementHandle);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLError (
IntPtr EnvironmentHandle,
IntPtr ConnectionHandle,
short BufferLength,
ref short TextLength);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLGetStmtAttr (
IntPtr StatementHandle,
int Attribute,
int BufLen,
int StrLen);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLSetDescField (
IntPtr DescriptorHandle,
short RecNumber,
byte[] Value,
int BufLen);
- [DllImport("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLGetDiagRec (
OdbcHandleType HandleType,
IntPtr Handle,
short BufferLength,
ref short TextLength);
- [DllImport ("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLMoreResults (
IntPtr Handle);
ResetParams
}
- [DllImport ("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLFreeStmt (
IntPtr Handle,
SQLFreeStmtOptions option);
- [DllImport ("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLGetInfo (
IntPtr connHandle,
OdbcInfo info,
short buffLength,
ref short remainingStrLen);
- [DllImport ("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLColAttribute (
IntPtr StmtHandle,
short column,
ref short strLengthPtr,
ref int numericAttributePtr);
- [DllImport ("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLPrimaryKeys (
IntPtr StmtHandle,
string catalog,
string tableName,
short tableLength);
- [DllImport ("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLStatistics (
IntPtr StmtHandle,
string catalog,
short unique,
short Reserved);
- [DllImport ("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLBindCol (
IntPtr StmtHandle,
short column,
int bufferLength,
ref int indicator);
- [DllImport ("odbc32.dll")]
+ [DllImport ("odbc32.dll", CharSet = CharSet.Unicode)]
internal static extern OdbcReturn SQLBindCol (
IntPtr StmtHandle,
short column,