以下是如何重现它:
使用以下方法更改课程:
class Program
{
const string testSql = @"
SELECT extension,
CASE UPPER (EXTENSION)
WHEN 'DOC' THEN 'application/msword'
WHEN 'DOCX' THEN 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
WHEN 'XLS' THEN 'application/vnd.ms-excel'
WHEN 'XLSX' THEN 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
WHEN 'PPT' THEN 'application/vnd.ms-powerpoint'
WHEN 'PPTX' THEN 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
WHEN 'EPS' THEN 'application/postscript'
WHEN 'GIF' THEN 'image/gif'
WHEN 'BMP' THEN 'image/bmp'
WHEN 'JPG' THEN 'image/jpeg'
WHEN 'MP4' THEN 'video/mp4'
WHEN 'PDF' THEN 'application/pdf'
WHEN 'PNG' THEN 'image/png'
WHEN 'PSD' THEN 'image/vnd.adobe.photoshop'
WHEN 'TIF' THEN 'image/tiff'
WHEN 'TIFF' THEN 'image/tiff'
WHEN 'ZIP' THEN 'application/zip'
ELSE 'text/plain'
END AS mime_type
FROM (
select 'bmp' as extension from dual
union all
select 'jpg' as extension from dual
union all
select 'tif' as extension from dual
union all
select 'pdf' as extension from dual
union all
select 'zip' as extension from dual
union all
select 'gif' as extension from dual
union all
select 'txt' as extension from dual
)";
const string _connString = "Data Source = mydatabase; User Id = myuser; Password=mypw;Min Pool Size=1;";
static void Main(string[] args)
{
using (var myconn = new OracleConnection(_connString))
{
myconn.Open();
OracleCommand oc = new OracleCommand(testSql, myconn);
using (OracleDataReader odr = oc.ExecuteReader(System.Data.CommandBehavior.Default))
{
while (odr.Read())
{
var s = odr.GetString(odr.GetOrdinal("MIME_TYPE"));
Console.WriteLine($"Extension: {odr[0]} Mime type: {odr[1]}");
}
}
Console.ReadKey();
}
}
}
更改数据库,用户和密码并启动程序。
我得到的是:
Extension: bmp Mime type: image/bmp?
Extension: jpg Mime type: image/jpeg?
Extension: tif Mime type: image/tiff?
Extension: pdf Mime type: application/pdf
Extension: zip Mime type: application/zip
Extension: gif Mime type: image/gif?
Extension: txt Mime type: text/plain?
看看'?'在某些行的末尾。 问题是:这是我的Oracle客户端上的错误还是在System.Data.OracleClient中?
答案 0 :(得分:2)
我们遇到了同样的问题。这是system.data.oracleclient中的一个问题。所以我们使用了基于System.Data.OracleClient mono项目的非官方库:https://github.com/ericmend/oracleClientCore-2.0 这确实解决了额外符号的问题,但System.Data.Oracleclient读取大数据的速度非常慢,因为很久以前它已被弃用,但直到oracle发布.net核心的官方客户端,这可用于小数据集。
请看这篇帮助我们的类似帖子:.NET Core 2 + System.Data.OracleClient. Chinese characters doesn't work