0

我有以下功能:

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 values('Test','TestDes','TestUID','12-12-2012','sdsd',1,1,1,'sdsd',2)

但是问题还是一样...

4

2 回答 2

0

对于 UPDATE、INSERT 和 DELETE 语句,返回值是受命令影响的行数。当正在插入或更新的表上存在触发器时,返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,则返回值也是 -1。

更详细的阅读链接MSDN Link

于 2012-06-18T10:17:16.637 回答
0

如果您在代码中的某处启动了事务,则应使用 Transaction.Commit() 方法提交它。我也可以看到,您正在使用包含数据库名称的数据库表的长名称,应避免使用。检查数据是否正在插入 DisData 数据库,并且您正在另一个数据库中搜索...:)

于 2012-06-18T10:04:43.740 回答