SQL コマンドを使用して、最後に挿入された自動生成された RowID (またはキー) を抽出し、C# 変数として保存しようとしています。
前半はできるけど後半は無理…。
更新しました:-
Int32 newRowID = 0;
// -------------------------------------------------------------------- //
// SQL Query-1: to store validated information in the Enrollment table. //
// -------------------------------------------------------------------- //
SqlConnection Connection = new SqlConnection(xxx_DBConnect.SqlServerConnection);
String strSQL = " OPEN SYMMETRIC KEY zzzzzzzKey DECRYPTION BY CERTIFICATE zzzzzzzCertificate1"
+ " INSERT INTO [xxx].[dbo].[yyy]"
+ " (Type, Name, DBA, Address1, City, State, Zip, TIN, TINLast4, NPI)"
+ " values (@Type, @Name, @DBA, @Address1, @rCity, @State, @Zip, ENCRYPTBYKEY(KEY_GUID('zzzzzzz'),CONVERT(VARCHAR, @TIN)), @TINLast4, @rNPI)"
+ " CLOSE SYMMETRIC KEY zzzzzzzKey;"
+ " SET @RowId = SCOPE_IDENTITY();";
// Connection is explicitly opened.
Connection.Open();
SqlCommand command = new SqlCommand(strSQL, Connection);
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = "@RowId";
parameter.SqlDbType = SqlDbType.Int;
parameter.Direction = ParameterDirection.Output;
command.Parameters.Add(parameter);
command.Parameters.AddWithValue("@Type", _type);
command.Parameters.AddWithValue("@Name", _Name);
command.Parameters.AddWithValue("@DBA", _DBA);
command.Parameters.AddWithValue("@Address1", _address);
command.Parameters.AddWithValue("@City", _city);
command.Parameters.AddWithValue("@State", _state);
command.Parameters.AddWithValue("@Zip", _zip);
command.Parameters.AddWithValue("@TIN", _tIN);
command.Parameters.AddWithValue("@TINLast4", _TINlast4);
command.Parameters.AddWithValue("@NPI", _nPI);
//newRowID = (Int32)command.ExecuteScalar();// <--- how do I write this in the correct syntax ?? ....
command.ExecuteNonQuery();
if (parameter.Value != DBNull.Value)
{
newRowID = (int)parameter.Value;
}
Connection.Close();
エラーは発生しませんが、newRowID = 0 ...期待される結果は130です....返されたSQLparamaterが「0」を返していると仮定しています
次の構文の正しい書き方はありますか?
C# コードの任意の場所で変数 newRowID にアクセスして使用できるように...