我有以下功能:
public Exception createTopic(Topic t)
{
query = "insert into [DisData].[dbo].[discussions]([title],[description],[usrid],[dateadded],[desid],[likes],[shares],[visit],[replyto],[sno]) values(@title,@des,@uid,@dateadded,@did,@like,@share,@visit,@replyto,@sno)";
try
{
com = new SqlCommand(query, con);
com.Parameters.AddWithValue("@title", t.getTitle());
com.Parameters.AddWithValue("@des", t.getDescription());
com.Parameters.AddWithValue("@uid", t.getUsrID());
com.Parameters.AddWithValue("@dateadded", t.getDate());
com.Parameters.AddWithValue("@did", t.getDesID());
com.Parameters.AddWithValue("@like", 0);
com.Parameters.AddWithValue("@share", 0);
com.Parameters.AddWithValue("@visit", 0);
com.Parameters.AddWithValue("@replyto", t.getReplyToID());
com.Parameters.AddWithValue("@sno", getDisCount() + 1);
con.Open();
com.ExecuteNonQuery();
con.Close();
res.Redirect("viewthread.aspx?id=" + t.getDesID());
return null;
}
catch (Exception e)
{
con.Close(); return e;
}
}
连接字符串在包含类的构造函数中定义。问题在于,每当我尝试执行此函数时,它都会执行而不会出现任何异常,即使不是在Visual Studio调试器控制台上也是如此,并且也不会使用用户提供的新条目更新数据库。当我检查ExecuteNonQuery()的返回值时,它返回-1。对我来说代码似乎没问题,或者可能是我遗漏了一些东西。请帮我识别一下。
我还尝试通过删除所有AddWithValue()语句并将查询预定义为
来执行查询插入 [DisData] [DBO] .discussions 值( '测试', 'TestDes', 'TestUID', '12-12-2012', 'sdsd',1,1,1, 'sdsd',2)
但问题仍然存在......
答案 0 :(得分:0)
如果您已在代码中的某处启动了事务,则应使用Transaction.Commit()方法提交它。 我也可以看到,你使用数据库表的长名称,包括数据库名称,应避免使用。检查数据是否正在插入DisData数据库,并且您正在另一个数据库中搜索......:)
答案 1 :(得分:0)
对于UPDATE,INSERT和DELETE语句,返回值是受命令影响的行数。当插入或更新的表上存在触发器时,返回值包括插入或更新操作影响的行数以及受触发器或触发器影响的行数。对于所有其他类型的语句,返回值为-1。如果发生回滚,则返回值也为-1。
更多细节阅读链接MSDN Link