牛腩新闻发布系统—发布错误总结

版权声明:我的四年啊! https://blog.csdn.net/sunshisiqi/article/details/86736927

       牛腩新闻发布系统是一个可以让你了解B/S项目的总体项目,自己做完之后会对浏览器/服务器模式有个深刻的了解,下面我想说一个困扰了我两三天的问题。
       这个问题出现是因为我在跟着牛腩老师敲存储过程的时候,新闻ID是int类型的,但是在代码里定义的是string类型的,转换到数据库里就是nvarchar类型,所以肯定会报类型转换错误。这个问题我想了两三天,因为之前有个查询新闻的类型转换错误是修改了一下存储过程就ok了,但是这次修改存储过程不管用,反而报了没有声明变量的错误,这个问题比类型转换的更棘手。

思路一

       我先是修改了存储过程,参照之前改的存储过程,下面代码展示给大家。

// 参照的查询新闻代码
ALTER PROCEDURE [dbo].[SelectByNewsID]
  @newsID nvarchar(50)
AS
BEGIN
    declare @sql varchar(max)
	set @sql='select title,content,createTime,caID from news where newsID='+@newsID
	exec(@sql)
END

//修改之后的修改新闻代码  但是是错误的,给大家个错误参考
ALTER PROCEDURE [dbo].[UpdateNews]
  @caID int,
  @title nvarchar(100),
  @content nvarchar(100),
  @newsID int
AS
BEGIN  
  declare @sql varchar(max)
  set @sql='update news set caID=@caID,title=@title,content=@content where newsID='+@newsID
  exec(@sql)
END

       这是错误代码,这个写完之后报未声明变量的错误所以不能这么改,期间有别人提议,说可以把实体里的类型变成string类型的,我采纳了,但是我修改的时候一个修改,其他地方也得修改,一连串得都得修改,所以这不是个好办法。忽然有一天我灵光乍现了,想到可以定义一个string类型的变量再转换成int类型,这样也可以。下面我把我的思路是如何转变的代码展示给大家。

// 问题之处
string newsID = Request.QueryString["newsID"];//这个代码是获取新闻ID,就是这个类型转换出错了。

//修改之后的代码
string news = Request.QueryString["newsID"].Replace("'", " ");//去点字符 '
int newsID = Convert.ToInt32(news);//转换成int类型

       这个问题解决之后,我的牛腩就完成了99%。下面就是发布。发布的时候我参考的一个博客特别详细,大家需要的可以点击这里
       我的系统发布之后登录跳转不到主界面,在伟杰的帮助下,知道了配置文件里有个代码没改,改完之后就好了。

//mode要改为RemoteOnly
 <!--出现错误的时候自动导向-->
<customErrors mode="RemoteOnly" defaultRedirect="~/error.html"></customErrors>

猜你喜欢

转载自blog.csdn.net/sunshisiqi/article/details/86736927