Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
以下示例显示如何获得为新插入行所生成的主键。在本示例中,将使用 SADataAdapter 对象调用 SQL 存储过程和 SAParameter 对象以对其返回的主键进行检索。出于演示的目的,本示例将创建一个示例表 (adodotnet_primarykey) 和用于插入行和返回主键值的存储过程 (sp_adodotnet_primarykey)。
SAConnection conn = new SAConnection( "Data Source=SQL Anywhere 12 Demo" ); conn.Open(); SACommand cmd = conn.CreateCommand(); cmd.CommandText = "DROP TABLE adodotnet_primarykey"; cmd.ExecuteNonQuery(); cmd.CommandText = "CREATE TABLE IF NOT EXISTS adodotnet_primarykey (" + "ID INTEGER DEFAULT AUTOINCREMENT, " + "Name CHAR(40) )"; cmd.ExecuteNonQuery(); cmd.CommandText = "CREATE or REPLACE PROCEDURE sp_adodotnet_primarykey(" + "out p_id int, in p_name char(40) )" + "BEGIN " + "INSERT INTO adodotnet_primarykey( name ) VALUES( p_name );" + "SELECT @@IDENTITY INTO p_id;" + "END"; cmd.ExecuteNonQuery(); SADataAdapter da = new SADataAdapter(); da.MissingMappingAction = MissingMappingAction.Passthrough; da.MissingSchemaAction = MissingSchemaAction.AddWithKey; da.SelectCommand = new SACommand( "SELECT * FROM adodotnet_primarykey", conn); da.InsertCommand = new SACommand( "sp_adodotnet_primarykey", conn); da.InsertCommand.CommandType = CommandType.StoredProcedure; da.InsertCommand.UpdatedRowSource = UpdateRowSource.OutputParameters; SAParameter parmId = new SAParameter(); parmId.SADbType = SADbType.Integer; parmId.Direction = ParameterDirection.Output; parmId.SourceColumn = "ID"; parmId.SourceVersion = DataRowVersion.Current; da.InsertCommand.Parameters.Add(parmId); SAParameter parmName = new SAParameter(); parmName.SADbType = SADbType.Char; parmName.Direction = ParameterDirection.Input; parmName.SourceColumn = "Name"; parmName.SourceVersion = DataRowVersion.Current; da.InsertCommand.Parameters.Add(parmName); DataTable dataTable = new DataTable("Departments"); da.FillSchema(dataTable, SchemaType.Source); DataRow row = dataTable.NewRow(); row[0] = -1; row[1] = "R & D --- Adapter"; dataTable.Rows.Add(row); row = dataTable.NewRow(); row[0] = -2; row[1] = "Marketing --- Adapter"; dataTable.Rows.Add(row); row = dataTable.NewRow(); row[0] = -3; row[1] = "Sales --- Adapter"; dataTable.Rows.Add(row); row = dataTable.NewRow(); row[0] = -4; row[1] = "Shipping --- Adapter"; dataTable.Rows.Add(row); DataSet ds = new DataSet(); ds.Merge(dataTable); da.Update(ds, "Departments"); conn.Close(); dataGridView1.DataSource = ds.Tables["Departments"];