Ich habe diesen Code.SqlCommand.ExecuteScalar() gibt Null zurück
public void Insert(Order order)
{
SqlConnection con = DACHelper.GetConnection();
SqlCommand cmd = new SqlCommand("Insert into Orders(Category_Id,Item_Id)Values(@Category_Id,@Item_Id)", con);
cmd.CommandType = System.Data.CommandType.Text;
cmd.Parameters.AddWithValue("@Category_Id", order.Category.Id);
cmd.Parameters.AddWithValue("@Item_Id", order.Item.Id);
con.Open();
using (con)
{
SqlTransaction tran = con.BeginTransaction();
cmd.Transaction = tran;
try
{
int orderId = Convert.ToInt32(cmd.ExecuteScalar());
new OrderMailsDAC().Insert(orderId, order.Mail , tran);
tran.Commit();
}
catch (Exception ex)
{
tran.Rollback();
throw ex;
}
}
}
public void Insert(int orderId,OrderConfirmationMail mails,SqlTransaction tran)
{
SqlConnection con = tran.Connection;
SqlCommand cmd = new SqlCommand("Insert into OrderMails(Mail,Order_Id)Values(@Mail,@Order_Id)", con);
cmd.CommandType = System.Data.CommandType.Text;
cmd.Transaction = tran;
cmd.Parameters.Add("@Mail", SqlDbType.VarChar).Value=mails.Mail;
cmd.Parameters.Add("@Order_Id",SqlDbType.Int).Value=orderId;
cmd.ExecuteNonQuery();
}
Das Problem hierbei ist, dass die
int orderId = Convert.ToInt32(cmd.ExecuteScalar());
mit Ausnahme der Id
null zurückkehrt, die korrekt gespeichert wird.
Bitte helfen Sie mir mit diesem
Die 'cmd' nichts zurückliefert - es ist nur ** ** Einsätze eine neue Zeile in Ihrer Datenbank. Daher wird 'ExecuteScalar()' nichts zurück bekommen ...... fehlt ein '; SELECT SCOPE_IDENTITY(); 'nach Ihrer' INSERT'-Anweisung vielleicht ?? Das würde den neu eingefügten Identitätswert aus dem 'INSERT'-Statemnet zurückgeben. –