データベースに新しいディスカッション スレッドを挿入するディスカッション フォーラム Web サイトの挿入関数を作成しました。機能は次のとおりです。
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