C# if(exists() return 问题

ALTERPROCEDURE[dbo].[proc_addStudent](@StudentIDvarchar(20),@DepartmentIDvarchar(5),@... ALTER PROCEDURE [dbo].[proc_addStudent]
(
@StudentID varchar(20) ,
@DepartmentID varchar(5) ,
@Name nvarchar(20) ,
@sex char(1),
@Password varchar(20) ,
@Telephone varchar(30),
@Email varchar(50),
@comment nvarchar(500)
)
as
if(exists(select * from StudentInfo where StudentID=@StudentID))
return -1
insert into StudentInfo( StudentID, DepartmentID, Name, sex, Password, Telephone, Email, comment)
values(@StudentID, @DepartmentID, @Name, @sex, @Password, @Telephone, @Email, @comment)
return @@rowcount
上面是存储过程

以下为程序
obj.Execpro("proc_addStudent", sp, out rowcount);
if (rowcount > 0)
{
Response.Redirect("AddStu.aspx?flag=addsuccess");
}
else
{
ClientScript.RegisterStartupScript(typeof(Page), "", "alert('添加失败!')", true);
}
这个是新建一个学生用户,if(exists())那句是查找存不存这个学号的学生,应该是不存在的,因为我已经在原有的最大学号之上加1了

这段我基本明白,我不明的是ROWCOUNT受影晌的是指那几行呢?
还有return -1有什麽用呢?
还有别一问题
data = System.DateTime.Now.Year.ToString() + (int.Parse(str.Substring(6)) + 1).ToString("000000");

这里的ToString("000000")有什么作用呢?
展开
 我来答
kas68310
2010-05-19 · TA获得超过3637个赞
知道大有可为答主
回答量:1468
采纳率:33%
帮助的人:1179万
展开全部
StudentID 是学号.
过程在添加行之前,搜索已有的学生,如果此学号已存在,则返回一个标记.代表学生已存在.
因为要保持学生的唯一性,姓名可以重复,但学号不能有两个(/以上).
所以程序中在else 后显示"添加失败",实际上应当显示"学号已存在,添加失败"
此方法的使用相当于自定义了一个逻辑分流.

ToString("000000"),这个没用过.
不过你可以自己试一下ToString("000000")和ToString()的区别,
如果输出有区别的话,可能是格式化字符串上的设定.
小狗核桃
2010-05-19 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:127
采纳率:0%
帮助的人:106万
展开全部
1成功了rouwcount就是1
2returned -1就会跳出函数,意思就是如果已经有重复的主键就不执行后面的插入操作了,返回-1是为了判断执行成功了没有, if (rowcount > 0)这里不是有用到么,其实返回什么都无所谓啦,只要能判断执行是不是成功就行。
3data应该是时间吧,意思就是数据库中完整的时间格式后面有时分秒微秒啥的,把位补齐...其实不补齐插入也能成功的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MagicMicky
2010-05-19 · TA获得超过508个赞
知道小有建树答主
回答量:423
采纳率:0%
帮助的人:216万
展开全部
成功的话rowcount应该就是1,表示有一行变了(就是新加了)

return -1表示出错了

你补充的这个data这一句你的程序里没有啊?toString是把int转成string

至于这个“000000”我就不知道了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tanghuawei
2010-05-19 · TA获得超过209个赞
知道小有建树答主
回答量:340
采纳率:0%
帮助的人:279万
展开全部
ToString("000000");表示十进制数,也可以用ToString("D6"),比如你的整数是5,则在5的前面补齐5个0,也就是000005,如果位数超过6了,比如:5000000,则显示原数,这样防止将这个数存入数据库时0被默认去掉了
在很多时候,比如格式化日期的时候,可能日期显示为2010-1-5 1:1:1,而你需要显示成2010-01-05 01:01:01,你就可以用到ToString("D2");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式