C#中的SQL查询错误

时间:2016-12-06 12:53:54

标签: c# mysql

我是SQL Queries的新手,我想加载" PSX LAGA" SettlementTypeSetup(表)中的结算,其中结算类型等于常规/ BO和销售/购买等于"购买";

下面是我的代码,这是我的表

enter image description here

private void Load_Settlement_Type()
        {
        SqlCeConnection conn = null;
        SqlCeCommand cmd = null;
        SqlCeDataReader rdr = null;

        try
        {
            conn =
                new SqlCeConnection(
                   @"Data Source=|DataDirectory|\Database.sdf;Persist Security Info=False");
            conn.Open();
            cmd = new SqlCeCommand("SELECT PSXLaga FROM SettlementTypeSetup where SettlementType=BO/REGULAR;" , conn);
            rdr = cmd.ExecuteReader();

            if (rdr == null)
            {
                MessageBox.Show("Reader is null");
            }
            else
            {
                while (rdr.Read())
                {
                    PSXLAGATEXT  = rdr["PSXLaga"].ToString();

                }

                 rdr.Close();
                cmd.Dispose();

            }
        }
        finally
        {
            conn.Close();
            PSXLagaTextBox.Text = PSXLAGATEXT;

        }

    }

****它给我错误:列名:BO / REGULAR未找到,而BO / REGULAR不是列名,BO / REGULAR是SettlementType(Column)的值,条件应如下**

  

给我一​​个PSX Laga值,其中SettlementType(Column)值是   BO / REGULAR和销售/购买(栏目)是购买。

**

2 个答案:

答案 0 :(得分:6)

您需要在''中写下您的值,因为它是一个字符串。其他方法是使用参数。

cmd = new SqlCeCommand("SELECT PSXLaga FROM SettlementTypeSetup where SettlementType=@Type" , conn);

cmd.Parameters.AddWithValue("@Type", "BO/REGULAR");

答案 1 :(得分:3)

此查询表示您要从PSXLaga表中检索SettlementTypeSetup,其中SettlementType等于给定值。在你的情况下,这是BO / REGULAR。如果您的SettlementType是字符串,则必须在您的值周围加上引号,如下所示:'BO/REGULAR'

因此,您的正确查询将如下所示:

"SELECT PSXLaga FROM SettlementTypeSetup WHERE SettlementType = 'BO/REGULAR';"

编辑:我发现您还想检查销售/购买是否等于“购买”。您可以将此添加到您的查询中:(我不确定它是否喜欢您的表名中的/ ..)

"AND Sale/Purchase = 'Purchase'"

我建议使用mybirthname的答案。它客观上比上面的查询更好。

第二次修改:您再次忘记了引号。不正确的:

"SELECT PSXLaga FROM SettlementTypeSetup where SettlementType="+settlementTypeComboBox.Text + " AND [Sale/Purchase]='Purchase'"

正确:

"SELECT PSXLaga FROM SettlementTypeSetup WHERE SettlementType = '" + settlementTypeComboBox.Text + "' AND [Sale/Purchase] = 'Purchase';"

但是再次尝试编写像mybirthname所示的代码。我对C#代码中的查询没有太多经验。