2

我正在尝试根据前一个 ComboBox 的选择为 ComboBox 选择一组数据。我一直相信这是SELECT第二种方法中的声明,但我无法弄清楚为什么它不起作用。当我运行应用程序时,我收到此错误:

数据类型对布尔运算无效。[数据类型(如果已知)= int,数据类型(如果已知)= 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;
        }
4

2 回答 2

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...]    
于 2012-04-27T21:11:33.577 回答
0

Parks 表中的 CityId 是整数吗?

您正在将一个 int 即 CityId 与一个字符串 '...cboCities.SelectedValue ...中的值...'进行比较

尝试将 City 转换为整数:

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

或者,如果您确定 in cboCities.SelectedValue 与 CityId 相同,您也可以不带引号尝试(整数到整数比较)

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

(注意我已经删除了 cboCities.SelectedValue 周围的单引号)

于 2012-04-27T21:06:06.370 回答