我尝试显示数据库中的数据。但是,即使数据库中存在数据,也不会返回任何记录。
如果运行以下查询:
select Id, Movie_Name from [MovieTable] where Movie_Name like '10,000 BC'
我被退回了:
然而,当在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()上方添加第三个消息框会显示消息"当没有数据时无效尝试读取"。有什么我想念的吗?
答案 0 :(得分:0)
你的代码运行正常,但很少适应。 您查询属性的值'年份'在表格和第一个查询中没有出现:
oReader.GetOrdinal("Year")
这会导致样本中出现异常。
由于您使用的是参数化查询,因此不需要单引号。 对于调试System.Diagnostics.Debug.WriteLine()的调试比MessageBoxes更有用
答案 1 :(得分:0)
问题在于数据本身。字段被错误地设置为类型"文字"。我将字段数据类型更改为" nvarchar(MAX)"。它还意味着可以将查询更改为:
"select * from [MovieTable] where Movie_Name = @MovieName"