C#.NET:OleDbDataReader类的read方法不会运行

时间:2016-04-29 11:20:33

标签: c# sql asp.net forms ms-access-2013

我正在使用.NET框架和C#语言在表单应用程序中为我的学校项目构建一个Intranet。此函数填充表单内的数据网格。但是,while结构中的代码不会运行。我已经一步一步地使用调试器,我认为" dr"的read()方法。对象不会通过我的两个内连接表,但当我按下一个按钮,我已经设置向我显示在数据库中注册了多少本书,它的工作原理。我认为我的SQL语句有问题,我在这个网站上搜索过,但我没有设法解决这个bug。 Carti.Nota和Carti.Stoc是Microsoft Access 2013数据库中具有Number类型的列。

private void PopulateGridBooks()
    {
        dataGridView1.Rows.Clear();
        using (OleDbConnection connect = new OleDbConnection(ConfigurationManager.ConnectionStrings["LibrarieConectare"].ConnectionString))
        {
            OleDbCommand command = connect.CreateCommand();
            command.Parameters.AddWithValue("@titlu", cautaTitlu.Text);
            command.CommandText =
                 " SELECT Carti.IDCarte, Carti.Titlu, Carti.Editie, Carti.An, Carti.ISBN, Carti.Nota, Carti.IDAutor, Carti.Stoc, Edituri.NumeEditura " +
                 " FROM (Carti INNER JOIN Edituri ON Carti.IDEditura = Edituri.IDEditura) " +
                 " WHERE Titlu LIKE '%@titlu%'";
            try
            {
                connect.Open();
                OleDbDataReader dr = command.ExecuteReader();
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        dataGridView1.Rows.Add(dr["IDCarte"], dr["Titlu"], dr["NumeEditura"], dr["Stoc"]);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Eroare la populare data grid carti: " + ex.Message);
            }
        }
    }

3 个答案:

答案 0 :(得分:1)

想想我发现了 - 你的参数错了,你不应该在AddwithValue中有@。

使用:

//Exclude the @ in the below. 
command.Parameters.AddWithValue("titlu", cautaTitlu.Text);

也可以将参数添加行移到命令文本之后。

答案 1 :(得分:1)

试试这个,

 command.CommandText =
                 " SELECT Carti.IDCarte, Carti.Titlu, Carti.Editie, Carti.An, Carti.ISBN, Carti.Nota, Carti.IDAutor, Carti.Stoc, Edituri.NumeEditura " +
                 " FROM Carti INNER JOIN Edituri ON Carti.IDEditura = Edituri.IDEditura " +
                 " WHERE Titlu LIKE '%' + @titlu +  '%';

答案 2 :(得分:0)

我建议将where子句更改为以下内容: “在哪里Titlu喜欢'%'+ @titlu +'%'”