AdomdDataReader GetValue(0) 返回 ????而不是非英文字符
AdomdDataReader GetValue(0) returning ???? instead of non-english characters
我的目标是通过 C# Azure 函数应用从 Azure 分析服务中某些表的某些列中获取所有唯一值。
我的代码工作正常,但是来自 AdomdDataReader 的 GetValue returns '?'字符串而不是汉字。对于英文字符串,它工作正常。如何使用 AdomdDataReader 处理检索非英语字符串?我看不出有其他方法可以从文档中检索值。
谢谢。
代码如下:
AdomdConnection conn = new AdomdConnection($"Data Source={server};User ID=app:{appId};Password={authKey};Catalog={dataBase}");
List<ColumnData> cols = CreateData();
List<List<Object>> lists = new List<List<Object>>();
foreach (var col in cols)
{
Console.WriteLine($"tableName: {col.tableName}, columnMame: {col.columnName}");
// string txt = "SELECT DISTINCT({[Timeframes].[Timeframe].[Timeframe]}) on columns, DISTINCT({[DimRetailer].[Consumer Global Parent].[Consumer Global Parent]}) on rows from [Model]";
string txt1 = "SELECT DISTINCT({[DimOSVersion].[OS Version].[OS Version]}) on columns, ";
string txt2 = "DISTINCT({[" + col.tableName + "].[" + col.columnName + "]" + ".[" + col.columnName + "]}) on rows from [Model]";
string txt = txt1 + txt2;
conn.Open();
AdomdCommand cmd = new AdomdCommand(txt, conn);
AdomdDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
List<Object> list = new List<Object>();
lists.Add(list);
// output the rows in the DataReader
while (dr.Read())
{
var value = dr.GetValue(0);
if(value != null)
if (value.ToString() != null)
list.Add(value);
}
dr.Close();
}
我可以重现你的问题。我也得到'????'当数据是中文时我这边。
我不确定你这边的OS,如果你的OS是win10,那么步骤如下:
问题出在您机器的系统位置。以上就是解决方法
之后的代码可以正常工作,而不是 return '????':
部署您的函数应用后,它应该也能正常工作。应该是你机器的问题
我的目标是通过 C# Azure 函数应用从 Azure 分析服务中某些表的某些列中获取所有唯一值。
我的代码工作正常,但是来自 AdomdDataReader 的 GetValue returns '?'字符串而不是汉字。对于英文字符串,它工作正常。如何使用 AdomdDataReader 处理检索非英语字符串?我看不出有其他方法可以从文档中检索值。
谢谢。
代码如下:
AdomdConnection conn = new AdomdConnection($"Data Source={server};User ID=app:{appId};Password={authKey};Catalog={dataBase}");
List<ColumnData> cols = CreateData();
List<List<Object>> lists = new List<List<Object>>();
foreach (var col in cols)
{
Console.WriteLine($"tableName: {col.tableName}, columnMame: {col.columnName}");
// string txt = "SELECT DISTINCT({[Timeframes].[Timeframe].[Timeframe]}) on columns, DISTINCT({[DimRetailer].[Consumer Global Parent].[Consumer Global Parent]}) on rows from [Model]";
string txt1 = "SELECT DISTINCT({[DimOSVersion].[OS Version].[OS Version]}) on columns, ";
string txt2 = "DISTINCT({[" + col.tableName + "].[" + col.columnName + "]" + ".[" + col.columnName + "]}) on rows from [Model]";
string txt = txt1 + txt2;
conn.Open();
AdomdCommand cmd = new AdomdCommand(txt, conn);
AdomdDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
List<Object> list = new List<Object>();
lists.Add(list);
// output the rows in the DataReader
while (dr.Read())
{
var value = dr.GetValue(0);
if(value != null)
if (value.ToString() != null)
list.Add(value);
}
dr.Close();
}
我可以重现你的问题。我也得到'????'当数据是中文时我这边。
我不确定你这边的OS,如果你的OS是win10,那么步骤如下:
问题出在您机器的系统位置。以上就是解决方法
之后的代码可以正常工作,而不是 return '????':
部署您的函数应用后,它应该也能正常工作。应该是你机器的问题