请高手帮忙分析下错误原因所在。

sklkitty 2010-01-25 02:11:03
我在程序中调用一个添加一条记录的方法。
TK.BLL.B_Tk_User user = new B_Tk_User();//跳用方法的一个类库
TK.Model.M_Tk_User userinfo = new M_Tk_User();// 实体类库
if (user.Add(userinfo) > 0)
{
response.write("添加信息成功!");
}
else
{
response.write("添加信息失败!");




可是我调试的时候 ,在程序中不返回值。
我检查了存储过程。可以添加一条信息。
没有什么错误。


真的很奇怪呀。

在调试进入这个方法的时候, 到 rowsAffected = command.ExecuteNonQuery(); 的时候 返回了,接着没有执行了。
这是什么原因呢?我把锁获得的值在 数据库里 执行 存储过程 可以执行,添加新的数据。
而到程序里,确不能执行成功!! 这还会有什么原因呢???
请大侠们帮忙分析下原因。
调试了很久 还是没找到原因。
在线等。。。。
哪为好心人士,帮的忙,解答一下。
十分感谢。
public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
int result;
connection.Open();
SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
rowsAffected = command.ExecuteNonQuery();
result = (int)command.Parameters["ReturnValue"].Value;
//Connection.Close();
return result;
}
}
...全文
142 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
sklkitty 2010-01-25
  • 打赏
  • 举报
回复
我就是跟了断点呢。

才晓得它一到这里rowsAffected = Convert.ToInt32(command.ExecuteNonQuery());
就返回程序呀。



嗯嗯 好呢。谢谢解答。好心人呀。
嘿嘿。
杨溪有新 2010-01-25
  • 打赏
  • 举报
回复
那可以设置断点。看看。应该是可以查出问题。细心点。或者可以把vs重新启动看看。
sklkitty 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 yangliuyilovexi 的回复:]
如果仅仅只想回复信息。是否成功。那么就可以直接返回刚才的那个
rowsAffected = Convert.ToInt32(command.ExecuteNonQuery());
就是这个

return rowsAffected;

out int rowsAffected

就不要了
[/Quote]


但是要不要也没什么影响吧 ,不会导致添加不了一条新的数据把。

我现在是找不出什么原因。

以前在弄别的项目的时候也是这样调用的程序的,但是没有出现现在这样的情况,会添加不了数据、

程序一执行到那里,就返回了。

奇怪,怪呀。
杨溪有新 2010-01-25
  • 打赏
  • 举报
回复
如果仅仅只想回复信息。是否成功。那么就可以直接返回刚才的那个
rowsAffected = Convert.ToInt32(command.ExecuteNonQuery());
就是这个

return rowsAffected;

out int rowsAffected

就不要了
sklkitty 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yangliuyilovexi 的回复:]
你是不是又想知道添加的状态。又想获得插入的值?
不知道你的returnValue 是不是你的主键。如果是的话
那么建议你的存储过程可以这样写:
insert into mytable values('李四')
select @@identity

这个返回的就是你插入的主键值。


[/Quote]


returnValue 是存储过程执行后返回的一个 值。

返回1 则添加数据成功了。

返回0则添加数据失败。
杨溪有新 2010-01-25
  • 打赏
  • 举报
回复
result = (int)command.Parameters["ReturnValue"].Value;
//Connection.Close();
return result;

那你这个返回什么?
sklkitty 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yangliuyilovexi 的回复:]
你是不是又想知道添加的状态。又想获得插入的值?
不知道你的returnValue 是不是你的主键。如果是的话
那么建议你的存储过程可以这样写:
insert into mytable values('李四')
select @@identity

这个返回的就是你插入的主键值。


[/Quote]

不是,我只是想 在数据库里添加一条数据就行了。

但问题是在程序的莫名的不执行呢。

我那存储过程是没问题的。
sklkitty 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yangliuyilovexi 的回复:]
rowsAffected = Convert.ToInt32(command.ExecuteNonQuery());
[/Quote]

我试了,还是不执行 语句。
sklkitty 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 microdeviser 的回复:]
try
{
  rowsAffected = Convert.ToInt32(command.ExecuteNonQuery());
}
catch(Exception ex)
{
 
}

看看有没有什么异常


[/Quote]

我试试看。


多谢楼上们解答。


杨溪有新 2010-01-25
  • 打赏
  • 举报
回复
你是不是又想知道添加的状态。又想获得插入的值?
不知道你的returnValue 是不是你的主键。如果是的话
那么建议你的存储过程可以这样写:
insert into mytable values('李四')
select @@identity

这个返回的就是你插入的主键值。

MicroDeviser 2010-01-25
  • 打赏
  • 举报
回复
try
{
rowsAffected = Convert.ToInt32(command.ExecuteNonQuery());
}
catch(Exception ex)
{

}

看看有没有什么异常

杨溪有新 2010-01-25
  • 打赏
  • 举报
回复
rowsAffected = Convert.ToInt32(command.ExecuteNonQuery());
sklkitty 2010-01-25
  • 打赏
  • 举报
回复
一楼,二楼的好心人,你的方法我试了。不是这个原因。


还是调试的时候 到rowsAffected = Convert.ToInt16(command.ExecuteScalar())

直接返回了不执行下面的语句了。

我郁闷呀。

还有什么可能呢,什么原因呢?
sklkitty 2010-01-25
  • 打赏
  • 举报
回复
我给了值的,只是没写出来而已省略了呀。..


这个程序我调试的时候 值全部取到了。
调试的时候到这里 rowsAffected = command.ExecuteNonQuery();


就返回去了。执行不了下面的语句了。

而且我也单独把自己所获得的值 在数据库里的存储过程里执行了一下。可以添加数据。
这就说明我写的那个存储过程没有问题。
就是程序那里有问题了。。??
就是找不原因来。


请大家帮忙分析下这样的情况。

在线等。
epwqgdnvrhok 2010-01-25
  • 打赏
  • 举报
回复
TK.BLL.B_Tk_User user = new B_Tk_User();//跳用方法的一个类库
TK.Model.M_Tk_User userinfo = new M_Tk_User();// 实体类库
if (user.Add(userinfo) > 0)
{
response.write("添加信息成功!");
}
else
{
response.write("添加信息失败!");

楼主你的那个 实体类里好像没有赋值吧
epwqgdnvrhok 2010-01-25
  • 打赏
  • 举报
回复
TK.BLL.B_Tk_User user = new B_Tk_User();//跳用方法的一个类库
TK.Model.M_Tk_User userinfo = new M_Tk_User();// 实体类库
if (user.Add(userinfo) > 0)
{
response.write("添加信息成功!");
}
else
{
response.write("添加信息失败!");

楼主你的那个 实体类里好像没有赋值吧
sklkitty 2010-01-25
  • 打赏
  • 举报
回复
楼上的好心人,到底是那个方法呀。rowsAffected = Convert.ToInt16(command.ExecuteNonQuery());
与rowsAffected = Convert.ToInt16(command.ExecuteScalar())

二者有什么区别。????
koukoujiayi 2010-01-25
  • 打赏
  • 举报
回复
1楼有误!返回影响的条数应该是:
rowsAffected = Convert.ToInt16(command.ExecuteScalar())
koukoujiayi 2010-01-25
  • 打赏
  • 举报
回复
rowsAffected = Convert.ToInt16(command.ExecuteNonQuery());

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧