在c#中访问两个参数命令

时间:2016-02-08 16:16:41

标签: c# ms-access

我就是这样做的,我得到了一个数据类型未命中匹配,但是tamp是一个整数,所以我认为它是其他的东西(我也在程序的另一个阶段传递一个整数到tamp)。 我是否需要通过另一个int传递它?或者这是我的访问声明的问题?整个代码块没有额外的where参数和for循环。

for循环帮助我按顺序加载它们,这对我正在做的事情非常重要

        for (int i = -100; i < 100; i++)
        {              
            try
            {
                connection.Open();
                OleDbCommand command = new OleDbCommand();
                command.Connection = connection;
                string query = "select * from Table1 where Status='" + comboBox5.Text + "'AND Tamp='" + i + "'";
                command.CommandText = query;
                listBox9.Items.Clear();
                OleDbDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {

                    listBox9.Items.Add(reader["Description"].ToString());
                }

                // MessageBox.Show("Data Saved");
                connection.Close();

            }
            catch (Exception ex)
            { MessageBox.Show("error " + ex); }

        }

1 个答案:

答案 0 :(得分:3)

假设tamp被定义为数据库中的整数,请更改

"'AND Tamp='" + i + "'";

"' AND Tamp=" + i;

通过在SQL命令中放置单引号,您将为数据库提供字符串而不是整数。

如果您使用的是C#6或更高版本,则可以使用字符串插值以更清晰的方式编写字符串

$"select * from Table1 where Status='{comboBox5.Text}' AND Tamp={i}"

请注意,从安全角度来看,这是的良好做法。您永远不应该接受用户输入并将其直接放在SQL命令中,因为它允许用户提供恶意输入,例如,删除数据或表。相反,请使用parameterized queriescomic linked in the comments就是例证。