2012-04-27 133 views
2

我想根據前面的ComboBox的選擇爲ComboBox選擇一組數據。我已經導致相信這是第二種方法中的SELECT聲明,但我無法弄清楚它爲什麼不起作用。當我運行應用程序,我收到此錯誤:「數據類型對於布爾操作無效。」

The data type is not valid for the boolean operation. [Data type (if known) = int,Data type (if known) = nvarchar ].

我一直在使用Parameter.AddWithValue也設定值作爲一個字符串無濟於事嘗試。有人會介意教我如何正確解決這個問題嗎?謝謝。

private void cboCities_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (cboCities.SelectedIndex > -1) 
     { 
      SqlCeConnection cn = new SqlCeConnection(@"Data Source = \Program Files\ParkSurvey\ParkSurvey.sdf; Persist Security Info = False; Password = *"); 
      cn.Open(); 
      SqlCeCommand cmd = cn.CreateCommand(); 
      cmd.CommandText = "SELECT Name FROM Parks WHERE CityId ='" + cboCities.SelectedValue + "'ORDER BY Name ASC"; 
      SqlCeDataAdapter da = new SqlCeDataAdapter(cmd); 
      DataSet ds = new DataSet(); 
      da.Fill(ds); 
      cn.Close(); 
      cboParks.ValueMember = "ParkId"; 
      cboParks.DisplayMember = "Name"; 
      cboParks.DataSource = ds.Tables[0]; 
      cboParks.SelectedIndex = -1; 
     } 
+0

你可以把一些更多細節請 - 表中cboCities.selectedValue結構,哪些數據的模樣,並且什麼 - (類型和數據) – 2012-04-27 22:32:55

+0

是啊..我同意普里特..可能有其他東西*其他*我們不知道 – MilkyWayJoe 2012-04-27 22:50:39

+0

直到星期一,我將不會回到帶有數據庫的計算機周圍,但如果內存服務正確,它的設置與此類似: 城市 - CityId,int(PK )(1,2,3等) - 名稱,varchar(達拉斯,沃思堡等) - rowguid,uniqueidentifier。 公園 - ParkId,INT(PK)(1,2,3,等等) - CityId,INT(FK)( '') - 名稱,VARCHAR(柳溪,泰倫特等) - ROWGUID,唯一標識符。 cboCities.SelectedValue是初始方法的cboCities.ValueMember,等於CityId。我會在週一提供更多細節。抱歉沒有準備好這些信息。 – PicoDeGallo 2012-04-27 23:27:18

回答

0

CityId在Parks表中是一個整數嗎?

您比較一個int即CityId爲一個字符串「在cboCities.SelectedValue ...值...」

試鑄城它和整數:

cmd.CommandText = "SELECT Name FROM Parks WHERE CAST(CityId AS NVARCAR) ='" + cboCities.SelectedValue + "'ORDER BY Name ASC"; 

或者,如果你爲確保在cboCities.SelectedValue是一樣的CityId你也可以嘗試不帶引號(整數到整數比較)

cmd.CommandText = "SELECT Name FROM Parks WHERE CityId = " + cboCities.SelectedValue + " ORDER BY Name ASC"; 

(注意:我已經刪除CB左右的單引號oCities.SelectedValue)

+0

這沒什麼,但第二個會失敗。在'ORDER BY'之前添加空格 – MilkyWayJoe 2012-04-27 21:13:05

+0

乾杯耳朵 - @milkywayjoe – 2012-04-27 21:31:04

+0

這兩個都會返回以下錯誤: 解析查詢時出錯。 [令牌行號= 1,令牌行偏移量= 49,令牌出錯=數據] – PicoDeGallo 2012-04-27 21:43:20

0

您是否嘗試過如下所示的內容?

//[...code...]  
    cmd.CommandText = "SELECT Name FROM Parks WHERE CityId = @CityId ORDER BY Name ASC"; 
    cmd.Parameters.Add("@CityId", System.Data.SqlDbType.Int, 2).Value = Convert.ToInt32(cboCities.SelectedValue); 
//[...code...]  
+0

使用此方法將返回InvalidCastException。 – PicoDeGallo 2012-04-27 21:42:35

+0

也許是大小..我會稍後檢查它,如果您仍然沒有找到答案..但嘗試使用大於2的尺寸 – MilkyWayJoe 2012-04-27 21:46:20

+0

我將其更改爲數據庫長度並且異常仍然存在。 – PicoDeGallo 2012-04-27 22:29:05

相關問題