// Creates a new parameter for a value in this expression translator internal SharpHsqlParameter CreateParameter(object value, DbType dbType) { string parameterName = string.Concat("@p", parameterNameCount.ToString(CultureInfo.InvariantCulture)); parameterNameCount++; SharpHsqlParameter parameter = new SharpHsqlParameter(parameterName, value); parameter.DbType = dbType; _parameters.Add(parameter); return(parameter); }
/// <summary> /// Creates a SharpHsqlParameter given a name, type, and direction /// </summary> internal static SharpHsqlParameter CreateSqlParameter(string name, TypeUsage type, ParameterMode mode, object value) { int?size; SharpHsqlParameter result = new SharpHsqlParameter(name, value); // .Direction ParameterDirection direction = MetadataHelpers.ParameterModeToParameterDirection(mode); if (result.Direction != direction) { result.Direction = direction; } // .Size and .DbType // output parameters are handled differently (we need to ensure there is space for return // values where the user has not given a specific Size/MaxLength) bool isOutParam = mode != ParameterMode.In; DbType sqlDbType = GetSqlDbType(type, isOutParam, out size); if (result.DbType != sqlDbType) { result.DbType = sqlDbType; } // Note that we overwrite 'facet' parameters where either the value is different or // there is an output parameter. if (size.HasValue && (isOutParam || result.Size != size.Value)) { result.Size = size.Value; } // .IsNullable bool isNullable = MetadataHelpers.IsNullable(type); if (isOutParam || isNullable != result.IsNullable) { result.IsNullable = isNullable; } return(result); }
/// <summary> /// Creates a SharpHsqlParameter given a name, type, and direction /// </summary> internal static SharpHsqlParameter CreateSqlParameter(string name, TypeUsage type, ParameterMode mode, object value) { int? size; SharpHsqlParameter result = new SharpHsqlParameter(name, value); // .Direction ParameterDirection direction = MetadataHelpers.ParameterModeToParameterDirection(mode); if (result.Direction != direction) { result.Direction = direction; } // .Size and .DbType // output parameters are handled differently (we need to ensure there is space for return // values where the user has not given a specific Size/MaxLength) bool isOutParam = mode != ParameterMode.In; DbType sqlDbType = GetSqlDbType(type, isOutParam, out size); if (result.DbType != sqlDbType) { result.DbType = sqlDbType; } // Note that we overwrite 'facet' parameters where either the value is different or // there is an output parameter. if (size.HasValue && (isOutParam || result.Size != size.Value)) { result.Size = size.Value; } // .IsNullable bool isNullable = MetadataHelpers.IsNullable(type); if (isOutParam || isNullable != result.IsNullable) { result.IsNullable = isNullable; } return result; }
static void Main(string[] args) { SharpHsqlConnection conn = new SharpHsqlConnection("Initial Catalog=mytest;User Id=sa;Pwd=;"); byte[] data = new byte[] { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; string base64photo = Convert.ToBase64String(data, 0, data.Length); try { conn.Open(); SharpHsqlCommand cmd = new SharpHsqlCommand("", conn); int res; Console.Write("Create table (y/n)?"); string create = Console.ReadLine(); if (create.ToLower() == "y") { cmd.CommandText = "DROP TABLE IF EXIST \"data\";CREATE TABLE \"data\" (\"id\" int NOT NULL PRIMARY KEY, \"MyObject\" OBJECT);"; res = cmd.ExecuteNonQuery(); cmd.CommandText = "DROP TABLE IF EXIST \"clients\";CREATE TABLE \"clients\" (\"id\" int NOT NULL IDENTITY PRIMARY KEY, \"DoubleValue\" double, \"nombre\" char, \"photo\" varbinary, \"created\" date );"; res = cmd.ExecuteNonQuery(); var tran = conn.BeginTransaction(); cmd = new SharpHsqlCommand("", conn); for (int i = 0; i < 10; i++) { cmd.CommandText = "INSERT INTO \"clients\" (\"DoubleValue\", \"nombre\", \"photo\", \"created\") VALUES (1.1, 'NOMBRE" + i.ToString() + "', '" + base64photo + "', NOW() );"; res = cmd.ExecuteNonQuery(); cmd.CommandText = "CALL IDENTITY();"; int id = (int)cmd.ExecuteScalar(); Console.WriteLine("Inserted id={0}", id); } cmd.CommandText = "DROP TABLE IF EXIST \"books\";CREATE TABLE \"books\" (\"id\" INT NOT NULL PRIMARY KEY, \"name\" char, \"author\" char, \"qty\" int, \"value\" numeric);"; res = cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO \"books\" VALUES (1, 'Book000', 'Any', 1, 23.5);"; res = cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO \"books\" VALUES (2, 'Book001', 'Andy', 2, 43.9);"; res = cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO \"books\" VALUES (3, 'Book002', 'Andy', 3, 37.25);"; res = cmd.ExecuteNonQuery(); tran.Commit(); } Console.WriteLine(); Console.Write("Do Bulk INSERTS (y/n)?"); string bulk = Console.ReadLine(); if (bulk.ToLower() == "y") { var tran = conn.BeginTransaction(); cmd = new SharpHsqlCommand("", conn); for (int i = 0; i < 1000; i++) { cmd.CommandText = "INSERT INTO \"clients\" (\"DoubleValue\", \"nombre\", \"photo\", \"created\") VALUES (1.1, 'NOMBRE" + i.ToString() + "', '" + base64photo + "', NOW() );"; res = cmd.ExecuteNonQuery(); } tran.Commit(); Console.WriteLine("Inserted 1000 new clients."); Console.WriteLine(); } cmd = new SharpHsqlCommand("", conn); cmd.CommandText = "SELECT \"clients\".\"id\", \"clients\".\"DoubleValue\", \"clients\".\"nombre\", \"clients\".\"photo\", \"clients\".\"created\" FROM \"clients\" ORDER BY \"clients\".\"id\" "; IDataReader reader = cmd.ExecuteReader(); byte[] photo = null; while (reader.Read()) { long len = reader.GetBytes(3, 0, null, 0, 0); photo = new byte[len]; reader.GetBytes(3, 0, photo, 0, (int)len); Console.WriteLine("id={0}, doubleValue={1}, nombre={2}, photo={3}, created={4}", reader.GetInt32(0), reader.GetDouble(1), reader.GetString(2), photo.Length, reader.GetDateTime(4).ToString("yyyy.MM.dd hh:mm:ss.fffffff")); } reader.Close(); Console.WriteLine(); cmd.CommandText = "SELECT * FROM \"books\""; reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine("id={0}book={1},\tauthor={2},\tqty={3},\tvalue={4}", reader.GetInt32(0), reader.GetString(1), reader.GetString(2), reader.GetInt32(3), reader.GetDecimal(4)); } Console.WriteLine(); reader.Close(); Console.WriteLine(); cmd.CommandText = "SELECT * FROM \"books\" ORDER BY \"value\""; reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine("id={0}book={1},\tauthor={2},\tqty={3},\tvalue={4}", reader.GetInt32(0), reader.GetString(1), reader.GetString(2), reader.GetInt32(3), reader.GetDecimal(4)); } Console.WriteLine(); reader.Close(); Console.WriteLine(); cmd.CommandText = "SELECT COUNT(*) as CNT, SUM(\"value\") FROM \"books\" WHERE \"author\" = 'Andy'"; reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine("count={0},\tvalue={1}", reader.GetInt32(0), reader.GetDecimal(1)); } Console.WriteLine(); reader.Close(); cmd.CommandText = "SELECT \"name\", \"author\", SUM(\"value\") FROM \"books\" WHERE \"author\" = 'Andy' GROUP BY \"name\", \"author\";"; reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine("name={0},\tauthor={1},\tvalue={2}", reader.GetString(0), reader.GetString(1), reader.GetDecimal(2)); } Console.WriteLine(); reader.Close(); cmd.CommandText = "SELECT \"name\", SUM(\"value\") FROM \"books\" WHERE \"author\" = 'Andy' GROUP BY \"name\";"; reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine("name={0},\tvalue={1}", reader.GetString(0), reader.GetDecimal(1)); } Console.WriteLine(); reader.Close(); cmd.CommandText = "DELETE FROM \"clients\" WHERE \"clients\".\"id\" = 6;"; res = cmd.ExecuteNonQuery(); Console.WriteLine(); cmd.CommandText = "SELECT MAX(\"clients\".\"id\") FROM \"clients\";"; object result = cmd.ExecuteScalar(); if (result != null) { res = (int)result; Console.WriteLine("MAX=" + res); } cmd.CommandText = "SELECT SUM(\"clients\".\"id\") FROM \"clients\";"; result = cmd.ExecuteScalar(); if (result != null) { res = (int)result; Console.WriteLine("SUM=" + res); } cmd.CommandText = "SELECT COUNT(\"clients\".\"id\") FROM \"clients\";"; result = cmd.ExecuteScalar(); if (result != null) { res = (int)result; Console.WriteLine("COUNT=" + res); } cmd.CommandText = "SELECT AVG(\"clients\".\"id\") FROM \"clients\";"; result = cmd.ExecuteScalar(); if (result != null) { res = (int)result; Console.WriteLine("AVG=" + res); } cmd.CommandText = "CALL ABS(-33.5632);"; result = cmd.ExecuteScalar(); if (result != null) { Double abs = (Double)result; Console.WriteLine("ABS=" + abs); } cmd.CommandText = "CREATE ALIAS CALCRATE FOR \"ExternalFunction,ExternalFunction.Simple.calcrate\";"; res = cmd.ExecuteNonQuery(); cmd.CommandText = "CREATE ALIAS EXTTAN FOR \"ExternalFunction,ExternalFunction.Simple.tan\";"; res = cmd.ExecuteNonQuery(); cmd.CommandText = "CALL CALCRATE(100, 21);"; Decimal rate = (Decimal)cmd.ExecuteScalar(); Console.WriteLine("CALCRATE=" + rate); cmd.CommandText = "CALL EXTTAN(23.456);"; Double tan = (Double)cmd.ExecuteScalar(); Console.WriteLine("EXTTAN=" + tan); cmd.CommandText = "CALL SQRT(3);"; Double sqrt = (Double)cmd.ExecuteScalar(); Console.WriteLine("SQRT=" + sqrt); cmd.CommandText = "CALL SUBSTRING('0123456', 3, 2);"; string subs = (String)cmd.ExecuteScalar(); Console.WriteLine("SUBSTRING=" + subs); cmd.CommandText = "CALL ASCII('A');"; int ascii = (int)cmd.ExecuteScalar(); Console.WriteLine("ASCII=" + ascii); cmd.CommandText = "CALL USER();"; string user = (string)cmd.ExecuteScalar(); Console.WriteLine("USER="******"SELECT \"clients\".\"photo\" FROM \"clients\" WHERE \"clients\".\"id\" = 5;"; byte[] b = (byte[])cmd.ExecuteScalar(); cmd.CommandText = "SELECT \"clients\".\"id\", \"clients\".\"DoubleValue\", \"clients\".\"nombre\" FROM \"clients\" WHERE \"clients\".\"id\" = 5;"; SharpHsqlDataAdapter adapter = new SharpHsqlDataAdapter(cmd); DataSet ds = new DataSet(); res = adapter.Fill(ds); adapter = null; Console.WriteLine(); Console.WriteLine("DataSet.Fill: " + ds.Tables[0].Rows.Count); cmd.CommandText = "DECLARE @MyVar CHAR;SET @MyVar = 'Andy';"; cmd.ExecuteNonQuery(); Console.WriteLine(); cmd.CommandText = "SELECT @MyVar;"; string var = (string)cmd.ExecuteScalar(); Console.WriteLine("@MyVar=" + var); Console.WriteLine(); cmd.CommandText = "SELECT \"name\", \"author\", SUM(\"value\") FROM \"books\" WHERE \"author\" = @MyVar GROUP BY \"name\", \"author\";"; reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine("name={0},\tauthor={1},\tvalue={2}", reader.GetString(0), reader.GetString(1), reader.GetDecimal(2)); } Console.WriteLine(); reader.Close(); cmd.CommandText = "INSERT INTO \"clients\" (\"DoubleValue\", \"nombre\", \"photo\", \"created\") VALUES (1.1, @MyVar, '" + base64photo + "', NOW() );"; res = cmd.ExecuteNonQuery(); cmd.CommandText = "DECLARE @MyId INT;SET @MyId = IDENTITY();"; cmd.ExecuteNonQuery(); cmd.CommandText = "SELECT @MyId;"; int myid = (int)cmd.ExecuteScalar(); Console.WriteLine("Inserted id={0}", myid); Console.WriteLine(); cmd.CommandText = "SET @MyId = SELECT MAX(\"clients\".\"id\") + 1 FROM \"clients\";"; cmd.ExecuteNonQuery(); cmd.CommandText = "SELECT @MyId;"; myid = (int)cmd.ExecuteScalar(); Console.WriteLine("Next id={0}", myid); Console.WriteLine(); reader.Close(); DateTime dt = DateTime.Now; cmd.CommandText = "INSERT INTO \"clients\" (\"DoubleValue\", \"nombre\", \"photo\", \"created\") VALUES (@DoubleValue, @nombre, @photo, @date );SET @Id = IDENTITY();"; cmd.Parameters.Add(new SharpHsqlParameter("@Id", DbType.Int32, 0, ParameterDirection.Output, false, 0, 0, null, DataRowVersion.Current, null)); cmd.Parameters.Add(new SharpHsqlParameter("@DoubleValue", DbType.Double, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, 1.1)); cmd.Parameters.Add(new SharpHsqlParameter("@nombre", DbType.String, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, "Andrés")); cmd.Parameters.Add(new SharpHsqlParameter("@photo", DbType.Binary, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, photo)); cmd.Parameters.Add(new SharpHsqlParameter("@date", DbType.DateTime, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, dt)); res = cmd.ExecuteNonQuery(); SharpHsqlParameter p = (SharpHsqlParameter)cmd.Parameters["@Id"]; myid = (int)p.Value; Console.WriteLine("Inserted id={0}", myid); Console.WriteLine(); cmd.Parameters.Clear(); cmd.CommandText = "SELECT \"clients\".\"created\" FROM \"clients\" WHERE \"clients\".\"id\" = " + myid + ";"; reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine(String.Format("Dates are equal: {0}.", dt.Equals(reader.GetDateTime(0)))); } Console.WriteLine(); reader.Close(); cmd.CommandText = "SHOW DATABASES;"; reader = cmd.ExecuteReader(); for (int i = 0; i < reader.FieldCount; i++) { Console.Write(reader.GetName(i)); Console.Write("\t"); } Console.Write(Environment.NewLine); while (reader.Read()) { for (int i = 0; i < reader.FieldCount; i++) { Console.Write(reader.GetValue(i).ToString()); Console.Write("\t"); Console.Write(Environment.NewLine); } } Console.WriteLine(); reader.Close(); // Dataset Fill for SHOW DATABASES adapter = new SharpHsqlDataAdapter(cmd); ds = new DataSet(); res = adapter.Fill(ds); adapter = null; Console.WriteLine(); Console.WriteLine("DATABASES: " + ds.Tables[0].Rows.Count); Console.WriteLine(); cmd.CommandText = "SHOW TABLES;"; reader = cmd.ExecuteReader(); for (int i = 0; i < reader.FieldCount; i++) { Console.Write(reader.GetName(i)); Console.Write("\t"); } Console.Write(Environment.NewLine); while (reader.Read()) { for (int i = 0; i < reader.FieldCount; i++) { Console.Write(reader.GetValue(i).ToString()); Console.Write("\t"); Console.Write(Environment.NewLine); } } Console.WriteLine(); reader.Close(); // Dataset Fill for SHOW TABLES adapter = new SharpHsqlDataAdapter(cmd); ds = new DataSet(); res = adapter.Fill(ds); adapter = null; Console.WriteLine(); Console.WriteLine("TABLES: " + ds.Tables[0].Rows.Count); Hashtable myData = new Hashtable(); myData.Add("1", "ONE"); myData.Add("2", "TWO"); myData.Add("3", "TREE"); myData.Add("4", "FOUR"); myData.Add("5", "FIVE"); cmd.Parameters.Clear(); cmd.CommandText = "DELETE FROM \"data\" WHERE \"id\" = 1;"; res = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); cmd.CommandText = "INSERT INTO \"data\" (\"id\", \"MyObject\") VALUES( @id, @MyObject);"; cmd.Parameters.Add(new SharpHsqlParameter("@id", DbType.Int32, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, 1)); cmd.Parameters.Add(new SharpHsqlParameter("@MyObject", DbType.Object, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, myData)); res = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); cmd.CommandText = "SELECT \"data\".\"id\", \"data\".\"MyObject\" FROM \"data\";"; reader = cmd.ExecuteReader(); Console.Write(Environment.NewLine); int myId = 0; Hashtable readData = null; while (reader.Read()) { myId = reader.GetInt32(0); readData = (Hashtable)reader.GetValue(1); } foreach (DictionaryEntry entry in readData) { Console.WriteLine(String.Format("Key: {0}, Value: {1}", entry.Key.ToString(), entry.Value.ToString())); } Console.WriteLine(); reader.Close(); cmd.CommandText = "SHOW ALIAS;"; reader = cmd.ExecuteReader(); Console.Write(Environment.NewLine); while (reader.Read()) { Console.WriteLine("ALIAS {0} FOR {1}", reader.GetString(0), reader.GetString(1)); } Console.WriteLine(); reader.Close(); cmd.CommandText = "SHOW PARAMETERS CALCRATE;"; reader = cmd.ExecuteReader(); Console.Write(Environment.NewLine); while (reader.Read()) { Console.WriteLine("ALIAS: {0}, PARAM: {1},\t TYPE {2},\t POSITION: {3}", reader.GetString(0), reader.GetString(1), reader.GetString(2), reader.GetInt32(3)); } Console.WriteLine(); reader.Close(); cmd.CommandText = "SHOW COLUMNS \"clients\";"; reader = cmd.ExecuteReader(); Console.Write(Environment.NewLine); while (reader.Read()) { Console.WriteLine("TABLE: {0}, COLUMN: {1},\n\t NATIVE TYPE: {2},\t DB TYPE: {3},\n\t POSITION: {4},\t NULLABLE: {5},\t IDENTITY: {6}", reader.GetString(0), reader.GetString(1), reader.GetString(2), reader.GetValue(3), reader.GetInt32(4), reader.GetBoolean(5), reader.GetBoolean(6)); } Console.WriteLine(); reader.Close(); } catch (SharpHsqlException ex) { Console.WriteLine(ex.Message); } catch (Exception e) { Console.WriteLine(e.Message); } finally { conn.Close(); conn = null; } Console.WriteLine(); Console.WriteLine("Press [ENTER] to exit."); Console.ReadLine(); }
/// <summary> /// Create and prepare a SharpHsqlCommand, and call ExecuteReader with the appropriate CommandBehavior. /// </summary> /// <remarks> /// If we created and opened the connection, we want the connection to be closed when the DataReader is closed. /// /// If the caller provided the connection, we want to leave it to them to manage. /// </remarks> /// <param name="connection">A valid SharpHsqlConnection, on which to execute this command</param> /// <param name="transaction">A valid SharpHsqlTransaction, or 'null'</param> /// <param name="commandType">The CommandType (TableDirect, Text)</param> /// <param name="commandText">The T-SQL command</param> /// <param name="commandParameters">An array of SharpHsqlParameters to be associated with the command or 'null' if no parameters are required</param> /// <param name="connectionOwnership">Indicates whether the connection parameter was provided by the caller, or created by SharpHsqlHelper</param> /// <returns>SharpHsqlReader containing the results of the command</returns> private static SharpHsqlReader ExecuteReader(SharpHsqlConnection connection, SharpHsqlTransaction transaction, CommandType commandType, string commandText, SharpHsqlParameter[] commandParameters, SharpHsqlConnectionOwnership connectionOwnership) { if( connection == null ) throw new ArgumentNullException( "connection" ); bool mustCloseConnection = false; // Create a command and prepare it for execution SharpHsqlCommand cmd = new SharpHsqlCommand(); try { PrepareCommand(cmd, connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection ); // Create a reader SharpHsqlReader dataReader; // Call ExecuteReader with the appropriate CommandBehavior if (connectionOwnership == SharpHsqlConnectionOwnership.External) { dataReader = cmd.ExecuteReader(); } else { dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); } // Detach the SharpHsqlParameters from the command object, so they can be used again. // HACK: There is a problem here, the output parameter values are fletched // when the reader is closed, so if the parameters are detached from the command // then the SharpHsqlReader can´t set its values. // When this happen, the parameters can´t be used again in other command. bool canClear = true; foreach(SharpHsqlParameter commandParameter in cmd.Parameters) { if (commandParameter.Direction != ParameterDirection.Input) canClear = false; } if (canClear) { cmd.Parameters.Clear(); } return dataReader; } catch { if( mustCloseConnection ) connection.Close(); throw; } }
/// <summary> /// This method is used to attach array of SharpHsqlParameters to a SharpHsqlCommand. /// /// This method will assign a value of DbNull to any parameter with a direction of /// InputOutput and a value of null. /// /// This behavior will prevent default values from being used, but /// this will be the less common case than an intended pure output parameter (derived as InputOutput) /// where the user provided no input value. /// </summary> /// <param name="command">The command to which the parameters will be added</param> /// <param name="commandParameters">An array of SharpHsqlParameters to be added to command</param> private static void AttachParameters(SharpHsqlCommand command, SharpHsqlParameter[] commandParameters) { if( command == null ) throw new ArgumentNullException( "command" ); if( commandParameters != null ) { foreach (SharpHsqlParameter p in commandParameters) { if( p != null ) { // Check for derived output value with no value assigned if ( ( p.Direction == ParameterDirection.InputOutput || p.Direction == ParameterDirection.Input ) && (p.Value == null)) { p.Value = DBNull.Value; } command.Parameters.Add(p); } } } }
/// <summary> /// This method opens (if necessary) and assigns a connection, transaction, command type and parameters /// to the provided command /// </summary> /// <param name="command">The SharpHsqlCommand to be prepared</param> /// <param name="connection">A valid SharpHsqlConnection, on which to execute this command</param> /// <param name="transaction">A valid SharpHsqlTransaction, or 'null'</param> /// <param name="commandType">The CommandType (TableDirect, Text)</param> /// <param name="commandText">The T-SQL command</param> /// <param name="commandParameters">An array of SharpHsqlParameters to be associated with the command or 'null' if no parameters are required</param> /// <param name="mustCloseConnection"><c>true</c> if the connection was opened by the method, otherwose is false.</param> private static void PrepareCommand(SharpHsqlCommand command, SharpHsqlConnection connection, SharpHsqlTransaction transaction, CommandType commandType, string commandText, SharpHsqlParameter[] commandParameters, out bool mustCloseConnection ) { if( command == null ) throw new ArgumentNullException( "command" ); if(commandType == CommandType.StoredProcedure ) throw new ArgumentException("Stored Procedures are not supported."); // If the provided connection is not open, we will open it if (connection.State != ConnectionState.Open) { mustCloseConnection = true; connection.Open(); } else { mustCloseConnection = false; } // Associate the connection with the command command.Connection = connection; // Set the command text (SQL statement) command.CommandText = commandText; // If we were provided a transaction, assign it if (transaction != null) { if( transaction.Connection == null ) throw new ArgumentException( "The transaction was rollbacked or commited, please provide an open transaction.", "transaction" ); command.Transaction = transaction; } // Set the command type command.CommandType = commandType; // Attach the command parameters if they are provided if (commandParameters != null) { AttachParameters(command, commandParameters); } return; }
public override void Visit(DbConstantExpression expression) { SharpHsqlParameter parameter = CreateParameter(expression.Value, expression.ResultType); _commandText.Append(parameter.ParameterName); }
public IDbDataParameter CreateParameter(String name, Object value) { if (!mInitialized) throw new Exception("Please call Initialize() before"); IDbDataParameter parameter = new SharpHsqlParameter(); parameter.ParameterName = name; if (value == null) { parameter.Value = DBNull.Value; } else { parameter.Value = value; } return parameter; }
// Creates a new parameter for a value in this expression translator internal SharpHsqlParameter CreateParameter(object value, DbType dbType) { string parameterName = string.Concat("@p", parameterNameCount.ToString(CultureInfo.InvariantCulture)); parameterNameCount++; SharpHsqlParameter parameter = new SharpHsqlParameter(parameterName, value); parameter.DbType = dbType; _parameters.Add(parameter); return parameter; }