我正在使用Visual Studio 2010,目標是連接到SQL Server 2008的.Net 2.0框架。在表中有varchar(50)
類型的字段Box_no
。該字段的內容大多是數字,有些是空的。空允許,但沒有任何。.NET SQL Server DataAdapter返回錯誤的字段類型?
下面是該查詢該表,並在網格中顯示(在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列還是你手動添加它們? – agradl
不要像這樣連接你的sql字符串,即使是數字字段也是如此。有辦法在你的numericUpDown1值中填充任何我想要的字符串,並且我可以完全接管你的數據庫。 –
另外,您的示例看起來像會引發異常,因此未檢查rbRestrictCount。 –