#c#
#c#
Вопрос:
Я создаю приложение Windows Form для нашего проекта мой проект посвящен системе планирования, и я пытаюсь выполнить поиск данных из моей базы данных ms access, которая содержит Day и Instructor. Столбец Day имеет только два значения «MWF и TTH». И когда я ищу MWF, я хочу, чтобы все данные, содержащие MWF, отображались в моем listview, но будут отображаться только одни данные. Как я могу это исправить?
КОД ЗДЕСЬ
public void Search()
{
c.OpenDb();
c.com.CommandType = CommandType.Text;
c.com.CommandText = "SELECT * FROM ScheduleInfo WHERE Day LIKE '%" comboBox1.Text "%' AND Instructor LIKE '%" textBox9.Text "%' ";
c.com.Connection = c.con;
c.dr = c.com.ExecuteReader();
if (c.dr.Read())
{
ListViewItem fp = new ListViewItem(c.dr["Day"].ToString());
fp.SubItems.Add(c.dr["Time"].ToString());
fp.SubItems.Add(c.dr["Instructor"].ToString());
fp.SubItems.Add(c.dr["Subject"].ToString());
fp.SubItems.Add(c.dr["Room"].ToString());
listView5.Items.Add(fp);
}
else
{
Notfound nf = new Notfound();
nf.ShowDialog();
if (nf.DialogResult == DialogResult.OK)
{
textBox9.Clear();
}
}
c.CloseDb();
}
private void button13_Click(object sender, EventArgs e)
{
Search();
}
Комментарии:
1. Не забывайте о маленьких таблицах Bobby. bobby-tables.com
2. Вы пробовали
while (c.dr.read())
или что-то подобное, чтобы выполнить цикл?3. Доступ. Дрожь.
4. Вы уверены, что Access использует
%
в качестве подстановочного знака, а не*
? Кажется, я что-то помню из давних времен…
Ответ №1:
Изменить if (c.dr.Read())
на while (c.dr.Read())
:
bool hasRecords = false;
while (c.dr.Read()) {
ListViewItem fp = new ListViewItem(c.dr["Day"].ToString());
fp.SubItems.Add(c.dr["Time"].ToString());
fp.SubItems.Add(c.dr["Instructor"].ToString());
fp.SubItems.Add(c.dr["Subject"].ToString());
fp.SubItems.Add(c.dr["Room"].ToString());
listView5.Items.Add(fp);
hasRecords = true;
}
if (!hasRecords) {
Notfound nf = new Notfound();
nf.ShowDialog();
if (nf.DialogResult == DialogResult.OK)
textBox9.Clear();
}
Ответ №2:
Access использует символ * в качестве подстановочного знака, а не символ%.
SQL Server использует символ% в качестве подстановочного знака. Возможно, это то, о чем вы думали.