2011-08-02 71 views
0

我正在使用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結構時試圖推斷不同的字段類型。有沒有辦法告訴它不要這樣做?

+0

是你自動生成的datagridview列還是你手動添加它們? – agradl

+0

不要像這樣連接你的sql字符串,即使是數字字段也是如此。有辦法在你的numericUpDown1值中填充任何我想要的字符串,並且我可以完全接管你的數據庫。 –

+0

另外,您的示例看起來像會引發異常,因此未檢查rbRestrictCount。 –

回答

1

試試這個它分配給數據源

dtRaw.Columns["box_no"].DataType = typeof(string); 
+0

沒有幫助我害怕... – RBrowning99

0

對不起之前,但已經找到了問題 - 科學記數法實際上是在數據本身 - 它是從一個XLS電子表格導入這似乎造成這在700K記錄中有69K。謝謝