code_junkie

@@IDENTITY after INSERT statement always returns 0

Nov 11th, 2011
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. public int ExecuteInsertStatement(string statement)
  2. {
  3. InitializeAndOpenConnection();
  4. int id = -1;
  5.  
  6.  
  7. IDbCommand cmdInsert = connection.CreateCommand();
  8. cmdInsert.CommandText = statement;
  9. int rows = cmdInsert.ExecuteNonQuery();
  10.  
  11. if (rows == 1)
  12. {
  13. IDbCommand cmdId = connection.CreateCommand();
  14. cmdId.CommandText = "SELECT @@Identity;";
  15. id = (int)cmdId.ExecuteScalar();
  16. }
  17.  
  18. return id;
  19. }
  20. private void InitializeAndOpenConnection()
  21. {
  22. if (connection == null)
  23. connection = OleDbProviderFactory.Instance.CreateConnection(connectString);
  24.  
  25. if(connection.State != ConnectionState.Open)
  26. connection.Open();
  27. }
  28.  
  29. public int ExecuteInsertStatement(string statement, string tableName)
  30. {
  31. InitializeAndOpenConnection();
  32. int id = -1;
  33. IDbCommand cmdInsert = connection.CreateCommand();
  34. cmdInsert.CommandText = statement + ";SELECT OID FROM " + tableName + " WHERE OID = SCOPE_IDENTITY();";
  35. id = (int)cmdInsert.ExecuteScalar();
  36.  
  37. return id;
  38. }
  39.  
  40. SELECT SCOPE_IDENTITY()
  41.  
  42. public int ExecuteInsertStatement(string statement)
  43. {
  44. InitializeAndOpenConnection();
  45.  
  46. IDbCommand cmdInsert = connection.CreateCommand();
  47. cmdInsert.CommandText = statement + "; SELECT @@Identity";
  48. object result = cmdInsert.ExecuteScalar();
  49.  
  50. if (object == DBNull.Value)
  51. {
  52. return -1;
  53. }
  54. else
  55. {
  56. return Convert.ToInt32(result);
  57. }
  58. }
  59.  
  60. OleDbConnection connection = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Password={0};Data Source={1};Persist Security Info=True",dbinfo.Password,dbinfo.MsAccessDBFile);
  61. connection.Open();
  62. OleDbTransaction transaction = null;
  63. try{
  64. connection.BeginTransaction();
  65. String commandInsert = "INSERT INTO TB_SAMPLE ([NAME]) VALUES ('MR. DUKE')";
  66. OleDbCommand cmd = new OleDbCommand(commandInsert , connection, transaction);
  67. cmd.ExecuteNonQuery();
  68. String commandIndentity = "SELECT @@IDENTITY";
  69. cmd = new OleDbCommandcommandIndentity, connection, transaction);
  70. Console.WriteLine("New Running No = {0}", (int)cmd.ExecuteScalar());
  71. connection.Commit();
  72. }catch(Exception ex){
  73. connection.Rollback();
  74. }finally{
  75. connection.Close();
  76. }
Add Comment
Please, Sign In to add comment