C# &引用;查询末尾缺少引号分隔符。”;WinCE PDA应用程序中的错误

C# &引用;查询末尾缺少引号分隔符。”;WinCE PDA应用程序中的错误,c#,compact-framework,windows-ce,pushdown-automaton,C#,Compact Framework,Windows Ce,Pushdown Automaton,在我的WinCE PDA应用程序中,我将扫描的条形码值与数据库中的条形码值进行比较,以生成一个表 我按照如下方式构建查询: for (int i = 0; i < listBox2.Items.Count; i++) { if (i == 0) { sb.Append("Select * from ToolsBar where BarcodeValue in ("); } sb.Append("'" + listBox2.Items[i]

在我的WinCE PDA应用程序中,我将扫描的条形码值与数据库中的条形码值进行比较,以生成一个表

我按照如下方式构建查询:

for (int i = 0; i < listBox2.Items.Count; i++)
{
    if (i == 0)
    {
        sb.Append("Select * from ToolsBar where BarcodeValue in (");
    }

    sb.Append("'" + listBox2.Items[i] + "',");

}

sb.Length = sb.Length - 1;
sb.Append(")");

生成查询的备用循环,无需更改字符串长度:

for (int i = 0; i < listBox2.Items.Count; i++)
{
    if (i == 0)
    {
        sb.Append("Select * from ToolsBar where BarcodeValue in (");
        sb.Append("'" + listBox2.Items[i] + "'");
    }
    else
    {
        sb.Append(",'" + listBox2.Items[i] + "'");
    }
}

sb.Append(")");
for(int i=0;i
sb的内容是什么?StringBuilder sb=new StringBuilder()@凯华成:@Martheen的意思是你的
StringBuilder
保存了什么字符串?你的
listBox2.项目
值中是否有引号(例如
O'Connor
)。如果他们这样做了,你就需要避开他们。你发布的内容缺少一个结束引号和结束括号。您确定您在问题中粘贴的循环是正确的吗?在创建字符串生成器和执行查询之间是否对其进行了任何其他更改?sb的内容是否仍然完全相同?尝试删除非字母数字字符,即使我删除了非字母数字字符,错误仍然是相同的,这几乎是不可能的。很明显,循环必须至少有一个“)”,即使列表框中没有任何内容,但你的应用程序只是跳过它们。尝试确认您的循环确实通过了最后一个sb.Append(“)”),并且在将其发送到cmd.commandtext(可能与相关)之前,没有去过其他任何地方。通常情况下,您不会有空字符,但当条形码读取涉及非托管呼叫时,您可能会有差事结束。使用sb.Append(“”+listbox2.Items[i]删除它们。替换(“\0”,string.Empty)+“”;vs2008不允许我使用替换。
for (int i = 0; i < listBox2.Items.Count; i++)
{
    if (i == 0)
    {
        sb.Append("Select * from ToolsBar where BarcodeValue in (");
        sb.Append("'" + listBox2.Items[i] + "'");
    }
    else
    {
        sb.Append(",'" + listBox2.Items[i] + "'");
    }
}

sb.Append(")");