我为讨论论坛网站编写了一个插入函数,用于在数据库中插入新的讨论线程。功能如下:
public int createDiscuss(Discussion dis)
{
query = "insert into [MyForums].[dbo].[Discussions](desid, text, date, time, replyto, uid, isPrivate) values(@id, @text, @date, @time, @replyto, @uid, @pvp)";
string did=getDesID();
if (did == null)
return -1;
try
{
com = new SqlCommand(query, con);
com.Parameters.AddWithValue("@id", did);
com.Parameters.AddWithValue("@text", dis.gettext());
com.Parameters.AddWithValue("@date", SqlDateTime.Parse(DateTime.Now.ToString()));
com.Parameters.AddWithValue("@time", SqlDateTime.Parse(DateTime.Now.ToString()));
com.Parameters.AddWithValue("@replyto", dis.getreplyto());
com.Parameters.AddWithValue("@uid", dis.getuid());
if (dis.IsPrivate() == false)
{ com.Parameters.AddWithValue("@pvp", 1); }
else
{ com.Parameters.AddWithValue("@pvp", 2); }
con.Open();
int r=com.ExecuteNonQuery();
if (r <= 0)
{
return -1;
}
con.Close();
}
catch (Exception)
{
return -1;
}
return 0;
}
此函数如果遇到错误或异常,则返回 -1 并由调用函数检查,然后调用函数显示错误。问题是这个插入函数没有执行查询。当我检查这些值是否作为参数正确传递给 AddWithValue 函数时,我发现每个值都按照 asp.net 页面上给出的方式传递。但是当控制权来到 com.ExecuteNonQuery() 函数时。它返回 -1 是错误的。谁能告诉我我的代码有什么问题?或者我如何检查为什么 com.ExecuteNonQuery() 没有返回任何受影响的行?
此异常显示
A first chance exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll
An exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll but was not handled in user code