【发布时间】:2011-10-18 11:43:26
【问题描述】:
我正在使用面向 .Net 2.0 框架的 Visual Studio 2010,连接到 SQL Server 2008。在表中有一个名为 Box_no 的字段,类型为 varchar(50)。该字段的内容主要是数字,有些是空的。允许空值,但没有空值。
以下是查询此表并显示在网格中的代码(else 省略):
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 结构时试图推断不同的字段类型。有没有办法告诉它不要这样做?
【问题讨论】:
-
您的 datagridview 列是自动生成的还是您手动添加的?
-
不要像这样连接你的 sql 字符串,即使对于数字字段也是如此。有办法在你的 numericUpDown1 值中填充我想要的任何字符串,这样我就可以完全接管你的数据库。
-
另外,您的示例看起来会抛出异常,因为未检查 rbRestrictCount。
-
自动生成。乔尔感谢您的关心,但我知道我在做什么。
-
Joel - 正如我在最初的帖子中所说,我没有显示 else - 如果这就是所有代码,它不会引发异常 - 它不会编译。
标签: c# sql-server datatable dataadapter