"В конце запроса отсутствует разделитель кавычек". ошибка в приложении WinCE PDA

В моем приложении 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(")");

И используйте это здесь:

cmd.CommandText = sb.ToString();
cmd.CommandType = CommandType.Text;

cmd.Connection = con;
con.Open();

reader = cmd.ExecuteReader(); // this is where the error came out  "A quotation mark delimiter is missing from the end of the query." 
reader.Close();
SqlCeDataAdapter ad = new SqlCeDataAdapter(sb.ToString(), con);
DataSet ds = new DataSet();
ad.Fill(ds);
dataGrid2.DataSource = ds.Tables[0];

con.Close();
sb.Length = 0;

1 ответ

Решение

Альтернативный цикл для построения вашего запроса, который устраняет необходимость изменять длину строки:

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(")");
Другие вопросы по тегам