我有這段代碼。SqlCommand.ExecuteScalar()返回null
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();
}
的這裏的問題是,
int orderId = Convert.ToInt32(cmd.ExecuteScalar());
,例外的是正確地存儲在Id
返回null。
請幫我這個
的'cmd'不返回任何東西 - 它只是** **插入新行到你的數據庫。因此,ExecuteScalar()將不會得到任何回報......你是否錯過了一個'; SELECT SCOPE_IDENTITY();'在你的'INSERT'語句之後可能?這將返回從'插入'狀態新插入的身份值 –