"В конце запроса отсутствует разделитель кавычек". ошибка в приложении 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(")");