我是SQL Queries的新手,我想加载" PSX LAGA" SettlementTypeSetup(表)中的结算,其中结算类型等于常规/ BO和销售/购买等于"购买";
下面是我的代码,这是我的表
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和销售/购买(栏目)是购买。
**
答案 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#代码中的查询没有太多经验。