.NET SQL Server DataAdapter возвращает неправильный тип поля? - PullRequest
0 голосов
/ 02 августа 2011

Я использую Visual Studio 2010 для платформы .Net 2.0, подключаясь к SQL Server 2008. В таблице есть поле с именем Box_no типа varchar(50).Содержимое поля в основном числа, некоторые пустые.Допустимые значения NULL, но их нет.

Вот код, который запрашивает эту таблицу и отображает ее в виде сетки (остальное пропущено):

DataTable dtRaw = new DataTable();
SqlDataAdapter sdaRaw;
if (rbRestrictCount.Checked)
{
   sdaRaw = new SqlDataAdapter("Select top 50 * from MyTable where ID >= \'" + numericUpDown1.Value + "\' Order By ID",
                                                       Properties.Settings.Default.ConnStr);
};
sdaRaw.Fill(dtRaw);
dataGridView1.DataSource = dtRaw;

Довольно просто.Проблема в том, что в соответствии с полем ID (то есть, откуда начинается поиск), поле box_no иногда отображается в научной записи - 2.4e + .... и т. Д. - в других случаях оно отображается в виде текста.Он определенно определен как varchar в таблице, но кажется, что адаптер данных пытается вывести другой тип поля при создании структуры DataTable.Можно ли как-то сказать, что не стоит этого делать?

Ответы [ 2 ]

1 голос
/ 02 августа 2011

попробуйте это перед назначением источника данных

dtRaw.Columns["box_no"].DataType = typeof(string);
0 голосов
/ 03 августа 2011

Извините, но нашли проблему - научная нотация фактически находится в самих данных - это был импорт из электронной таблицы XLS, который, кажется, вызвал это на 69K из 700K записей. Спасибо

...