internal void DeriveParameters() { if (commandType != CommandType.StoredProcedure) { throw new InvalidOperationException(String.Format("SybaseCommand DeriveParameters only supports CommandType.StoredProcedure, not CommandType.{0}", commandType)); } ValidateCommand("DeriveParameters"); SybaseParameterCollection localParameters = new SybaseParameterCollection(this); localParameters.Add("@P1", SybaseType.NVarChar, commandText.Length).Value = commandText; string sql = "sp_procedure_params_rowset"; Connection.Tds.ExecProc(sql, localParameters.MetaParameters, 0, true); SybaseDataReader reader = new SybaseDataReader(this); parameters.Clear(); object[] dbValues = new object[reader.FieldCount]; while (reader.Read()) { reader.GetValues(dbValues); parameters.Add(new SybaseParameter(dbValues)); } reader.Close(); }
public SybaseCommand(string commandText, SybaseConnection connection, SybaseTransaction transaction) { this.commandText = commandText; this.connection = connection; this.transaction = transaction; this.commandType = CommandType.Text; this.updatedRowSource = UpdateRowSource.Both; this.designTimeVisible = false; this.commandTimeout = 30; parameters = new SybaseParameterCollection(this); }
// execute an SQL UPDATE Command using ExecuteNonQuery() static void UpdateData(IDbConnection cnc) { IDbCommand updateCommand = cnc.CreateCommand(); updateCommand.CommandText = "update mono_sybase_test " + "set " + "bit_value = @p1, " + "tinyint_value = @p2, " + "smallint_value = @p3, " + "int_value = @p4, " + "char_value = @p5, " + "nchar_value = @p6, " + "varchar_value = @p7, " + "nvarchar_value = @p8, " + "binary_value = @p9, " + "varbinary_value = @p10 " + "where smallint_value = @p11"; SybaseParameterCollection parameters = ((SybaseCommand)updateCommand).Parameters; parameters.Add("@p1", SybaseType.Bit); parameters.Add("@p2", SybaseType.TinyInt); parameters.Add("@p3", SybaseType.SmallInt); parameters.Add("@p4", SybaseType.Int); parameters.Add("@p5", SybaseType.Char, 10); parameters.Add("@p6", SybaseType.NChar, 10); parameters.Add("@p7", SybaseType.VarChar, 14); parameters.Add("@p8", SybaseType.NVarChar, 14); parameters.Add("@p9", SybaseType.Binary, 8); parameters.Add("@p10", SybaseType.VarBinary, 8); parameters.Add("@p11", SybaseType.SmallInt); parameters ["@p1"].Value = false; parameters ["@p2"].Value = 2; parameters ["@p3"].Value = 5; parameters ["@p4"].Value = 3; parameters ["@p5"].Value = "Mono.Data!"; parameters ["@p6"].Value = "Mono.Data!"; parameters ["@p7"].Value = "It was not me!"; parameters ["@p8"].Value = "It was not me!"; parameters ["@p9"].Value = new byte[2] { 0x57, 0x3e }; parameters ["@p10"].Value = new byte[2] { 0xa2, 0xf7 }; parameters ["@p11"].Value = -22; updateCommand.ExecuteNonQuery(); }
private SybaseCommand(string commandText, SybaseConnection connection, SybaseTransaction transaction, CommandType commandType, UpdateRowSource updatedRowSource, bool designTimeVisible, int commandTimeout, SybaseParameterCollection parameters) { this.commandText = commandText; this.connection = connection; this.transaction = transaction; this.commandType = commandType; this.updatedRowSource = updatedRowSource; this.designTimeVisible = designTimeVisible; this.commandTimeout = commandTimeout; this.parameters = new SybaseParameterCollection(this); for (int i = 0; i < parameters.Count; i++) { this.parameters.Add(((ICloneable)parameters[i]).Clone()); } }
// Tests a SQL Command (INSERT, UPDATE, DELETE) // executed via ExecuteReader static IDataReader SelectDataUsingInsertCommand(IDbConnection cnc) { IDbCommand selectCommand = cnc.CreateCommand(); IDataReader reader; // This is a SQL INSERT Command, not a Query selectCommand.CommandText = "INSERT INTO mono_sybase_test (" + " bit_value, " + " binary_value, " + " char_value, " + " datetime_value, " + " decimal_value, " + " float_value, " + " int_value, " + " money_value, " + " nchar_value, " + " nvarchar_value, " + " real_value, " + " smalldatetime_value, " + " smallint_value, " + " smallmoney_value, " + " tinyint_value, " + " varbinary_value, " + " varchar_value " + ") values (" + "@p1, " + "@p2, " + "@p3, " + "@p4, " + "@p5, " + "@p6, " + "@p7, " + "@p8, " + "@p9, " + "@p10, " + "@p11, " + "@p12, " + "@p13, " + "@p14, " + "@p15, " + "@p16, " + "@p17 " + ")"; SybaseParameterCollection parameters = ((SybaseCommand)selectCommand).Parameters; parameters.Add("@p1", SybaseType.Bit); parameters.Add("@p2", SybaseType.Binary, 8); parameters.Add("@p3", SybaseType.Char, 14); parameters.Add("@p4", SybaseType.DateTime); parameters.Add("@p5", SybaseType.Decimal); parameters.Add("@p6", SybaseType.Float); parameters.Add("@p7", SybaseType.Int); parameters.Add("@p8", SybaseType.Money); parameters.Add("@p9", SybaseType.NChar, 16); parameters.Add("@p10", SybaseType.NVarChar, 19); parameters.Add("@p11", SybaseType.Real); parameters.Add("@p12", SybaseType.SmallDateTime); parameters.Add("@p13", SybaseType.SmallInt); parameters.Add("@p14", SybaseType.SmallMoney); parameters.Add("@p15", SybaseType.TinyInt); parameters.Add("@p16", SybaseType.VarBinary, 8); parameters.Add("@p17", SybaseType.VarChar, 17); parameters ["@p1"].Value = true; parameters ["@p2"].Value = new byte[2] { 0x9a, 0xbc }; parameters ["@p3"].Value = "This is a char"; parameters ["@p4"].Value = DateTime.Now; parameters ["@p5"].Value = 123456789012.345; parameters ["@p5"].Precision = 15; parameters ["@p5"].Scale = 3; parameters ["@p6"].Value = 3.1415926969696; parameters ["@p7"].Value = 1048000; parameters ["@p8"].Value = 31337.456; parameters ["@p9"].Value = "This is an nchar"; parameters ["@p10"].Value = "This is an nvarchar"; parameters ["@p11"].Value = 3.141592; parameters ["@p12"].Value = new DateTime(2001, 7, 9); parameters ["@p13"].Value = -22; parameters ["@p14"].Value = 31337.456; parameters ["@p15"].Value = 15; parameters ["@p16"].Value = new byte[2] { 0xde, 0xef }; parameters ["@p17"].Value = "This is a varchar"; reader = selectCommand.ExecuteReader(); return(reader); }
// execute SQL INSERT Command using ExecuteNonQuery() static void InsertData(IDbConnection cnc) { IDbCommand insertCommand = cnc.CreateCommand(); insertCommand.CommandText = "INSERT INTO mono_sybase_test (" + " bit_value, " + " binary_value, " + " char_value, " + " datetime_value, " + " decimal_value, " + " float_value, " + " int_value, " + " money_value, " + " nchar_value, " + " nvarchar_value, " + " real_value, " + " smalldatetime_value, " + " smallint_value, " + " smallmoney_value, " + " tinyint_value, " + " varbinary_value, " + " varchar_value " + ") values (" + "@p1, " + "@p2, " + "@p3, " + "@p4, " + "@p5, " + "@p6, " + "@p7, " + "@p8, " + "@p9, " + "@p10, " + "@p11, " + "@p12, " + "@p13, " + "@p14, " + "@p15, " + "@p16, " + "@p17 " + ")"; SybaseParameterCollection parameters = ((SybaseCommand)insertCommand).Parameters; parameters.Add("@p1", SybaseType.Bit); parameters.Add("@p2", SybaseType.Binary, 8); parameters.Add("@p3", SybaseType.Char, 14); parameters.Add("@p4", SybaseType.DateTime); parameters.Add("@p5", SybaseType.Decimal); parameters.Add("@p6", SybaseType.Float); parameters.Add("@p7", SybaseType.Int); parameters.Add("@p8", SybaseType.Money); parameters.Add("@p9", SybaseType.NChar, 16); parameters.Add("@p10", SybaseType.NVarChar, 19); parameters.Add("@p11", SybaseType.Real); parameters.Add("@p12", SybaseType.SmallDateTime); parameters.Add("@p13", SybaseType.SmallInt); parameters.Add("@p14", SybaseType.SmallMoney); parameters.Add("@p15", SybaseType.TinyInt); parameters.Add("@p16", SybaseType.VarBinary, 8); parameters.Add("@p17", SybaseType.VarChar, 17); parameters ["@p1"].Value = true; parameters ["@p2"].Value = new byte[2] { 0x12, 0x34 }; parameters ["@p3"].Value = "This is a char"; parameters ["@p4"].Value = new DateTime(1959, 7, 17); // My mom's birthday! parameters ["@p5"].Value = 123456789012.345; parameters ["@p5"].Precision = 15; parameters ["@p5"].Scale = 3; parameters ["@p6"].Value = 3.1415926969696; parameters ["@p7"].Value = 1048000; parameters ["@p8"].Value = 31337.456; parameters ["@p9"].Value = "This is an nchar"; parameters ["@p10"].Value = "This is an nvarchar"; parameters ["@p11"].Value = 3.141592; parameters ["@p12"].Value = new DateTime(1976, 10, 31); // My birthday! parameters ["@p13"].Value = -22; parameters ["@p14"].Value = 31337.456; parameters ["@p15"].Value = 15; parameters ["@p16"].Value = new byte[2] { 0x56, 0x78 }; parameters ["@p17"].Value = "This is a varchar"; insertCommand.ExecuteNonQuery(); }