private void bnBug37865_2_Click(object sender, EventArgs e) { //Set up string execSQL = "CREATE TABLE testai1 (id INT UNSIGNED NOT NULL AUTO_INCREMENT, " + "name VARCHAR(100), PRIMARY KEY(id))"; MySqlConnection conn = new MySqlConnection(); conn.ConnectionString = "DataSource=xx;Database=xx;UserID=xx;Password=xx;PORT=xx;logging=True"; conn.Open(); MySqlCommand cmdQry = new MySqlCommand(); cmdQry.Connection = conn; cmdQry.CommandTimeout = 0; cmdQry.CommandText = "DROP TABLE IF EXISTS testai1"; cmdQry.ExecuteNonQuery(); cmdQry.CommandText = execSQL; cmdQry.ExecuteNonQuery(); //Real work MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM testai1", conn); MySqlCommandBuilder cb = new MySqlCommandBuilder(da); da.InsertCommand = cb.GetInsertCommand(); da.InsertCommand.CommandText += "; SELECT last_insert_id()"; da.InsertCommand.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord; DataTable dt = new DataTable(); da.Fill(dt); dt.Columns[0].AutoIncrement = true; Assert.IsTrue(dt.Columns[0].AutoIncrement); dt.Columns[0].AutoIncrementSeed = -1; dt.Columns[0].AutoIncrementStep = -1; DataRow row = dt.NewRow(); row["name"] = "Test"; dt.Rows.Add(row); da.Update(dt); dt.Clear(); da.Fill(dt); Assert.AreEqual(1, dt.Rows.Count); Assert.AreEqual(1, dt.Rows[0]["id"]); Assert.AreEqual("Test", dt.Rows[0]["name"]); cb.Dispose(); //Set up 2 cmdQry.CommandText = "DROP TABLE IF EXISTS testai1"; cmdQry.ExecuteNonQuery(); cmdQry.CommandText = execSQL; cmdQry.ExecuteNonQuery(); //Real work 2 MySqlDataAdapter da1 = new MySqlDataAdapter("SELECT * FROM testai1", conn); MySqlCommandBuilder cb1 = new MySqlCommandBuilder(da1); MySqlCommand cmd = (MySqlCommand)(cb1.GetInsertCommand() as ICloneable).Clone(); cmd.CommandText += "; SELECT last_insert_id() as id"; cmd.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord; da1.InsertCommand = cmd; DataTable dt1 = new DataTable(); da1.Fill(dt1); dt1.Rows.Clear(); DataRow row1 = dt1.NewRow(); row1["name"] = "Test"; dt1.Rows.Add(row1); da1.Update(dt1); Assert.AreEqual(1, dt1.Rows[0]["id"]); Assert.AreEqual("Test", dt1.Rows[0]["name"]); row1 = dt1.NewRow(); row1["name"] = "Test"; dt1.Rows.Add(row1); da1.Update(dt1); Assert.AreEqual(2, dt1.Rows[1]["id"]); Assert.AreEqual("Test", dt1.Rows[1]["name"]); Assert.AreEqual(1, dt1.Rows[0]["id"]); cmdQry.Dispose(); conn.Close(); }