Читайте числовые данные из таблицы оракула в C#
Я пытаюсь написать функцию C# для чтения некоторых данных из таблицы оракула
Мои функции:
public static writeConsole(string query, string connectionString, string driver)
{
//driver = Oracle.ManagedDataAccess.Client
using (var conn = DbProviderFactories.GetFactory(driver).CreateConnection())
{
using (var cmd = conn.CreateCommand())
{
cmd.Connection.ConnectionString = connectionString;
cmd.CommandType = CommandType.Text;
cmd.CommandText = query;
foreach (var item in ReadDouble(cmd))
{
Console.WriteLine(item);
}
}
}
}
private static IEnumerable<double> ReadDouble(IDbCommand cmd)
{
using (var r = cmd.ExecuteReader())
{
while (r.Read())
yield return r.GetDouble(0);
}
}
Нет проблем ни с подключением, ни с выполнением запроса.
Когда я читаю данные из таблицы оракулов в типе номер (9), он возвращает правильные значения, которые я ожидаю.
Когда я читаю данные из таблицы, где тип это число (9,2), он возвращает пустое значение (как пустая таблица).
Примечание: это только пример кода. Это должно быть написано с использованием интерфейсов IDb
Спасибо за помощь
2 ответа
public static writeConsole(string query, string connectionString, string driver)
{
//driver = Oracle.ManagedDataAccess.Client
using (var conn = DbProviderFactories.GetFactory(driver).CreateConnection())
{
using (var cmd = conn.CreateCommand())
{
cmd.Connection.ConnectionString = connectionString;
cmd.CommandType = CommandType.Text;
cmd.CommandText = query;
var reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[0]+"");
}
}
}
}
Ты можешь попробовать
OracleConnection conn = new OracleConnection(connectionString);
OracleCommand cmd = new OracleCommand(query, conn);
if (conn.State == ConnectionState.Closed)
conn.Open();
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[0]+"");
}
Возможно, это проблема с отображением типов. Попробуй это:
http://docs.oracle.com/html/E10927_01/featSafeType.htm
И это: