データベースにデータを挿入し、同時に識別子を取得しようとしています。
識別子の型は Guid です。
私はすでにいくつかの解決策を試しました。
探していましたが、C# の Guid で動作するものは見つかりませんでした。
私が最後に試したのは次のようなものでした:
dbAccess db = new dbAccess();
SqlConnection con = db.openConnection();
Guid retVal = Guid.Empty;
try
{
SqlCommand cmd = new SqlCommand(@"insert into Comment(IdDiscussion,UserId,Description,DateTime)
values(@IdDiscussion,@UserId,@description,@dateTime);
set @ret=SCOPE_IDENTITY();", con);
cmd.Parameters.AddWithValue("@IdDiscussion", discussionId);
cmd.Parameters.AddWithValue("@UserId", userId);
cmd.Parameters.AddWithValue("@description", comment);
cmd.Parameters.AddWithValue("@dateTime", dateTime);
SqlParameter retParameter = new SqlParameter("@ret", SqlDbType.UniqueIdentifier);
retParameter.Direction = ParameterDirection.Output;
cmd.Parameters.Add(retParameter);
cmd.ExecuteNonQuery();
retVal = (Guid)retParameter.Value;
}
catch (Exception e)
{
//doesn't really matter
}
db.closeConnection();
return retVal;
この場合、次のエラーが表示されexecuteNonQuery(): "Operand type clash: numeric is incompatible with uniqueidentifier"
ます。
役立つ提案はありますか?