データベースからID番号を返す次のコードがあります。ローカルで実行するとうまく動作しますが、ファイルをサーバーに置くとDBにデータが記録されますが、ID番号ではなく0が返されます。ストアドプロシージャは、サーバー上にあるときにのみ0を返します。ローカルでは実行されません。
HHID
は、DBに情報を記録するときに自動インクリメントするIDです。
SqlConnection conn = new SqlConnection("DB connection stuff");
SqlCommand cmd = conn.CreateCommand();
SqlDataReader reader;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "insert_workshop_requests";
cmd.Parameters.AddWithValue("@HHID", 1);
cmd.Parameters.AddWithValue("@username", usernameData.Text);
cmd.Parameters.AddWithValue("@name", nameData.Text);
cmd.Parameters.AddWithValue("@email", emailData.Text);
cmd.Parameters["@HHID"].Direction = System.Data.ParameterDirection.Output;
try
{
conn.Open();
reader = cmd.ExecuteReader();
HHID = System.Convert.ToInt32(cmd.Parameters["@HHID"].Value);
}
catch (Exception exc)
{
}
finally
{
if (conn.State != ConnectionState.Closed)
conn.Close();
}
これは私を夢中にしています! IDではなく0を格納しているSPに関する有用な記事がありましたが、問題は常にローカルでも実行されているため、誰かを助けることができます。ローカルで作業しているので、デバッグが非常に難しいです!
ありがとうございます!
ためには、ExecuteNonQueryを使用する必要がありますSP? –
ストアドプロシージャはどのように見えますか?あなたは希望のID番号の代わりに0を返すことをどのようにチェックしますか? – Ian
@ hlh3406また、私はExecuteNonQueryを使うべきだと思います。 –