我正在從一個應用程序讀取OLESQL服務器中的數據。目前我只是讀取數據並將其插入到字符串中。每當我遇到一個DBTYPE_WVARCHAR時,我都會做一些閱讀。我可以使用myReader.GetString(index),但是當這種情況發生時我會崩潰。這是我迄今爲止的代碼。解析OLEDB var類型C#
OleDbDataReader myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
int i =0;
string FullRow = "";
for(i=0;i<myReader.FieldCount;i++)
{
string type=myReader.GetDataTypeName(i);
if ("DBTYPE_I4" == type)
{
FullRow += myReader.GetInt32(i);
}
else if ("Date" == type || "DBDate" == type || "DBTimeStamp" == type)
{
FullRow += myReader.GetDateTime(i).ToString();
}
else if("Char" == type || "LongVarChar" == type || "LongVarWChar" == type || "VarWChar" == type || "WChar" == type){
FullRow += myReader.GetString(i);
}
else if ("DBTYPE_WVARCHAR" == type)
{
FullRow += myReader.GetString(i); //Crash when this line gets hit
}
else
{
FullRow=FullRow;
}
}
FullRow+=", ";
Console.Write(FullRow);
}
「我正在崩潰」 - 大概有一個例外?什麼是例外? – 2013-02-14 15:49:31
我可能是錯的,但有一點告訴我WVARCHAR更多的是一個多字節的UniCode字符,而不是簡單的A-Z字符。 – DRapp 2013-02-14 15:54:36
@JonSkeet我得到一個InvalidCastException 而對於DrApp Googlefu告訴我的WVARCHAR是很好的通過.GetString()我沒有看到任何.GetUnicodeString():/也使用 使用System.Data.OleDb; – 2013-02-14 16:05:03