“数据类型对布尔运算无效”
本文关键字:无效 布尔运算 数据类型 | 更新日期: 2023-09-27 18:32:34
我正在尝试根据以前的组合框的选择为组合框选择一组数据。我一直认为这是第二种方法中的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;
}
您是否尝试过以下方法?
//[...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...]
公园表中的 CityId 是整数吗?
您正在将 int 即 CityId 与字符串"...cboCities.SelectedValue ...'
尝试将城市转换为整数:
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周围的单引号)