我正在开发一种应用程序,可以从数据库中获取电影信息以及添加,更新和删除电影。在数据库中,我有三个表(电影,流派和电影流派<-存储电影及其流派/秒)。除了一件事,一切都可以正常工作,那就是电影没有任何类型的流派(应该有可能)。
在下面的方法中,会发生问题,并引发以下异常: 数据为Null。 不能在Null值上调用此方法或属性。
原因(当然)是因为电影没有任何体裁,所以sproc返回null,但是我只是不知道如何防止抛出此异常。就像我说的那样,应该可以在不存储任何流派信息的情况下存储电影。
提前致谢!
方法:
public List<MovieGenre> GetMovieGenrebyMovieID(int movieID) {
using (SqlConnection conn = CreateConnection()) {
try {
SqlCommand cmd = new SqlCommand("dbo.usp_GetMovieGenreByMovieID", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@MovieID", movieID);
List<MovieGenre> movieGenre = new List<MovieGenre>(10);
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader()) {
int movieGenreIDIndex = reader.GetOrdinal("MovieGenreID");
int movieIDIndex = reader.GetOrdinal("MovieID");
int genreIDIndex = reader.GetOrdinal("GenreID");
while (reader.Read()) {
movieGenre.Add(new MovieGenre {
MovieID = reader.GetInt32(movieIDIndex),
MovieGenreID = reader.GetInt32(movieGenreIDIndex),
GenreID = reader.GetInt32(genreIDIndex)
});
}
}
movieGenre.TrimExcess();
return movieGenre;
}
catch {
throw new ApplicationException();
}
}
}
程序:
ALTER PROCEDURE usp_GetMovieGenreByMovieID
@MovieID int
AS
BEGIN
BEGIN TRY
SELECT m.MovieID, g.GenreID, mg.MovieGenreID, g.Genre
FROM Movie AS m
LEFT JOIN MovieGenre AS mg
ON m.MovieId = mg.MovieID
LEFT JOIN Genre AS g
ON mg.GenreID = g.GenreID
WHERE m.MovieID = @MovieID
END TRY
BEGIN CATCH
RAISERROR ('Error while trying to receive genre(s).',16,1)
END CATCH
END
您不应该尝试将proc的null值转换为ints-
因此,在创建MovieGenre实例之前,需要使用以下SqlDataReader.IsDBNull
方法检查可为空的字段:
http://msdn.microsoft.com/zh-
CN/library/system.data.sqlclient.sqldatareader.isdbnull.aspx
假设GenreID和MovieGenreID是可为null的整数,则可以执行以下操作:
movieGenre.Add(new MovieGenre {
MovieID = reader.GetInt32(movieIDIndex),
MovieGenreID = reader.IsDBNull(movieGenreIDIndex) ? null : reader.GetInt32(movieGenreIDIndex),
GenreID = reader.IsDBNull(genreIDIndex) ? null : reader.GetInt32(genreIDIndex)
});
问题内容: 嗨,我在表格中将使用空值来填充组合框。我不确定该怎么做。当我运行以下代码时,出现错误: 数据为空。不能在空值上调用此方法或属性。 我需要帮助,并且是MySQL的新手 编码 : 问题答案: 当您的一个或多个字段包含NULL(DBNull.Value)时,您将无法对其使用。 您需要使用IsDBNull方法检查它们是否为空,然后选择要在文本框中输入的值。通常是一个空字符串 我建议也围绕一次性
我对学习java中的方法还不熟悉。在python中,使用“函数”很容易,但我最近了解到java没有类似的功能。我有一个方法,应该返回n1和n2中的最低值。我在公共静态int函数的行中得到一个错误。。。 但语法似乎没有任何问题。
本文向大家介绍js判断输入框不能为空格或null值的实现方法,包括了js判断输入框不能为空格或null值的实现方法的使用技巧和注意事项,需要的朋友参考一下 实例如下所示: 以上这篇js判断输入框不能为空格或null值的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
我对FreeMarker很陌生,我正在开发一个使用FreeMarker作为模板引擎的Spring MVC应用程序。 因此,我有以下问题,尝试将空值放入模型,并试图将其评估到我的FreeMarker页面。 因此,我有以下控制器方法: 因此,正如您在前面的代码片段中看到的那样,loginPost()方法将此String@ModelAt0016(重定向)String重定向(这是我的控制器类的@Sessi
(免责声明:当人们通过Facebook、Firebase等请求使用异步操作时,会问到数据为空/不正确的问题。我提出这个问题的目的是为每个开始在android中进行异步操作的人提供一个简单的答案) 我试图从我的一个操作中获取数据,当我使用断点或日志调试它时,值就在那里,但当我运行它时,它们总是空的,我如何解决这个问题? 火基 脸谱网 静态编程语言协程 等等。