C#没有从数据库返回的数据 - "没有数据时读取的尝试无效"

时间:2016-10-01 15:09:00

标签: c# sql

我尝试显示数据库中的数据。但是,即使数据库中存在数据,也不会返回任何记录。

如果运行以下查询:

select Id, Movie_Name from [MovieTable] where Movie_Name like '10,000 BC'

我被退回了:

enter image description here

然而,当在c#中运行类似的查询时,似乎没有返回任何内容。我的代码如下:

try
{
    string query = "select * from [MovieTable] where Movie_Name like @MovieName";
    string movieName = "10,000 BC"

    using (SqlConnection sconnection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=E:\Application\ApplicationDatabase.mdf;Integrated Security=True");)
    using (SqlCommand command = new SqlCommand(query, sconnection))
    {
        sconnection.Open();
        command.Parameters.AddWithValue("@MovieName", movieName);

        using (SqlDataReader oReader = command.ExecuteReader())
        {
            if (oReader != null)
            {
                while (oReader.Read())
                {
                    MessageBox.Show(oReader["Movie_Name"].ToString());
                }
            }
        }
    }
}
catch (Exception e)
{
    MessageBox.Show(e.ToString());
}

永远不会出现消息框。在oReader.Read()上方添加第三个消息框会显示消息"当没有数据时无效尝试读取"。有什么我想念的吗?

2 个答案:

答案 0 :(得分:0)

你的代码运行正常,但很少适应。 您查询属性的值'年份'在表格和第一个查询中没有出现:

oReader.GetOrdinal("Year")

这会导致样本中出现异常。

由于您使用的是参数化查询,因此不需要单引号。 对于调试System.Diagnostics.Debug.WriteLine()的调试比MessageBoxes更有用

答案 1 :(得分:0)

问题在于数据本身。字段被错误地设置为类型"文字"。我将字段数据类型更改为" nvarchar(MAX)"。它还意味着可以将查询更改为:

"select * from [MovieTable] where Movie_Name = @MovieName"