当项目与数据库中的值不相等时,如何获取列表的数据源
本文关键字:何获取 获取 数据源 列表 数据库 项目 不相等 | 更新日期: 2023-09-27 18:36:50
我有一个带按钮的月历,当单击按钮并且月历中的选定日期等于数据库列中的值时,我从数据库中使用了一个listbox.datasource,但是之后,当我在月历中选择一个新日期并且所选日期不等于列值时,我想返回我使用的列表的第一个数据源。请注意,我只使用:if(date。等于("20160322")) 没有 foreach 它工作正常,但不能使用 foreach 循环遍历列
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < defaultList.Length; i++)
{
listBox1.Items.Add(defaultList[i]);
}
string date = monthCalendar1.SelectionStart.Date.ToString("yyyyMMdd");
string connetionString = null;
MySqlConnection connection;
MySqlCommand command;
MySqlDataAdapter adapter = new MySqlDataAdapter();
DataSet ds = new DataSet();
int i = 0;
string sql = null;
connetionString = "datasource=localhost; database=bokning;port=3306;username=root;password=666666";
sql = "select date,dayTime from newsystem where date='" + date + "'";
connection = new MySqlConnection(connetionString);
try
{
connection.Open();
command = new MySqlCommand(sql, connection);
adapter.SelectCommand = command;
adapter.Fill(ds);
adapter.Dispose();
command.Dispose();
connection.Close();
dtDatetime = ds.Tables[0];
foreach (DataRow dr in dtDatetime.Rows)
{
if (date.Equals(dr["date"]))
{
listBox1.DataSource = ds.Tables[0];
listBox1.ValueMember = "date";
listBox1.DisplayMember = "dayTime";
}
else
{
//listBox1.Items.Clear();
listBox1.DataSource = defaultList;
}
}
}
catch (Exception ex)
{
MessageBox.Show("Cannot open connection ! ");
}
}
您的代码:
foreach (DataRow dr in dtDatetime.Rows)
{
if (date.Equals(dr["date"]))
{
listBox1.DataSource = ds.Tables[0];
listBox1.ValueMember = "date";
listBox1.DisplayMember = "dayTime";
}
else
{
listBox1.DataSource = defaultList;
}
}
如果没有项目,则无法访问 else 语句 - 如果有,所有项目都将匹配日期.. 此代码是您的逻辑错误所在
你需要类似的东西
伪代码:如果 rows.count>0 将数据源设置为 ds.tables[0] 否则数据源=默认列表
否为循环如果有 100 个项目,则设置 100 次没有意义