C# C“没有从数据库返回数据-”;当不存在数据时读取的尝试无效”;
我正在尝试显示数据库中的数据。但是,即使数据库中存在数据,也不会返回任何记录 如果需要,请运行以下查询:C# C“没有从数据库返回数据-”;当不存在数据时读取的尝试无效”;,c#,sql,C#,Sql,我正在尝试显示数据库中的数据。但是,即使数据库中存在数据,也不会返回任何记录 如果需要,请运行以下查询: select Id, Movie_Name from [MovieTable] where Movie_Name like '10,000 BC' 我被送回: 然而,在c#中运行类似的查询时,似乎没有返回任何内容。我的代码如下: try { string query = "select * from [MovieTable] where Movie_Name like @Movi
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()的正上方添加第三个消息框将显示消息“在没有数据时尝试读取无效”。有什么我遗漏的吗?您的代码对我来说运行良好,但几乎没有修改。 查询表和第一次查询中不存在的属性“Year”的值:
oReader.GetOrdinal("Year")
这会导致样本中出现异常
不需要单引号,因为您使用的是参数化查询。
对于调试对System.Diagnostics.Debug.WriteLine()的调用,它比MessageBox更有用问题在于数据本身。字段被错误地设置为“文本”类型。我将字段数据类型更改为“nvarchar(MAX)”。这也意味着查询不能更改为:
"select * from [MovieTable] where Movie_Name = @MovieName"
这条消息是因为在数据阅读器读取数据之前,您不能向它请求数据。MessageBox是调试代码的可怕方式这是一个windows窗体应用程序,对吗?如果你得到一个变量的年份值,并在那里指向一个断点,它会显示什么?什么都没有,因为它似乎没有进入while循环,我不得不问,如果你要像equals一样使用它,在SQL语句中使用
like
有什么意义?