Чтение «реального» типа данных в базе данных SQL Server в C # - PullRequest
1 голос
/ 07 января 2012

У меня есть метод, который извлекает данные из базы данных SQL Server Compact:

// Open the same connection with the same connection string.
using (SqlCeConnection con = new SqlCeConnection(DatabaseControl.conString))
{
   con.Open();
   // Read specific values in the table.
   using (SqlCeCommand com = new SqlCeCommand("SELECT Result FROM CpuResults WHERE Date = @date", con))
   {
      List<float> results = new List<float>();
      com.Parameters.AddWithValue("date", Form1.date);
      SqlCeDataReader reader = com.ExecuteReader();

      while (reader.Read())
      {
         float resultsoutput = reader.GetInt32(0);
         results.Add(resultsoutput);
      }

«Тип» для результатов в столбце «Результат» на cpuResults определяется как Real.Я пытаюсь перевести эти данные в формат с плавающей запятой, поскольку данные в столбце Result равны, например, 0,02 и 1,23 и т. Д. Хотя при запуске моего метода я получаю:

Указанное приведение недействительно.

Если я изменяю тип данных столбца Result на int, проблема не возникает ..

Ответы [ 3 ]

5 голосов
/ 07 января 2012

Эта строка:

float resultsoutput = reader.GetInt32(0);

Вы пытаетесь получить целое число и поместить значение в float.

Либо получите float для начала:

float resultsoutput = reader.GetFloat(0);

Или измените тип переменной:

int resultsoutput = reader.GetInt32(0);
0 голосов
/ 07 января 2012

Почему бы вам не попробовать reader.GetFloat (0)?

0 голосов
/ 07 января 2012

Это где ваш каст не удался?

float resultsoutput = reader.GetInt32(0);

Попробуйте это:

float resultsoutput = reader.GetFloat(0);
...