public void TestPrepareParamIn() { using (NuoDbConnection connection = new NuoDbConnection(TestFixture1.connectionString)) { connection.Open(); new NuoDbCommand("drop procedure nunit_test if exists", connection).ExecuteNonQuery(); new NuoDbCommand("create procedure nunit_test(in p1 string) as throw p1; end_procedure", connection).ExecuteNonQuery(); NuoDbCommand cmd = new NuoDbCommand("nunit_test", connection); cmd.CommandType = CommandType.StoredProcedure; cmd.Prepare(); Assert.IsTrue(cmd.Parameters.Contains("p1")); Assert.AreEqual(ParameterDirection.Input, cmd.Parameters["p1"].Direction); cmd.Parameters["p1"].Value = "hello"; try { cmd.ExecuteNonQuery(); Assert.Fail(); } catch (Exception e) { Assert.IsTrue(e.Message.EndsWith("hello"), "Expected error: 'hello', received " + e.Message); } } }
internal static void CreateGameTable() { using (NuoDbConnection connection = new NuoDbConnection(connectionString)) { connection.Open(); try { DbCommand dropCommand = new NuoDbCommand("drop table Game", connection); dropCommand.ExecuteNonQuery(); } catch (Exception) { // table is allowed to be missing } DbCommand createCommand = new NuoDbCommand("create table Game" + "(" + " Id bigint generated always as identity not NULL primary key," + " Date DATE" + ")", connection); createCommand.ExecuteNonQuery(); DbCommand insertCommand = new NuoDbCommand("Insert into Game (Date) Values (?)", connection); insertCommand.Prepare(); insertCommand.Parameters[0].Value = "1970-01-01"; insertCommand.ExecuteNonQuery(); } }
internal static void CreatePersonTable() { using (NuoDbConnection connection = new NuoDbConnection(connectionString)) { connection.Open(); try { DbCommand dropCommand = new NuoDbCommand("drop table Person", connection); dropCommand.ExecuteNonQuery(); } catch (Exception) { // table is allowed to be missing } DbCommand createCommand = new NuoDbCommand("create table Person" + "(" + " Id char(38) not NULL primary key," + " Name String" + ")", connection); createCommand.ExecuteNonQuery(); DbCommand insertCommand = new NuoDbCommand("Insert into Person (Id, Name) Values (?,?)", connection); insertCommand.Prepare(); insertCommand.Parameters[0].Value = new Guid("{F571197E-7A4F-4961-9363-7411EACCA841}"); insertCommand.Parameters[1].Value = "Klaus Müller"; insertCommand.ExecuteNonQuery(); } }
public void TestTableValuedArgument() { using (NuoDbConnection connection = new NuoDbConnection(TestFixture1.connectionString)) { connection.Open(); new NuoDbCommand("drop procedure nunit_test if exists", connection).ExecuteNonQuery(); try { new NuoDbCommand("create procedure nunit_test(input_data(field1 string, field2 integer), out output_data string) " + " as " + " output_data = ''; " + " for select field1 from input_data; " + " output_data = output_data || field1 || ' '; " + " end_for; " + " end_procedure", connection).ExecuteNonQuery(); } catch (NuoDbSqlException e) { if (e.Code.Code == -1) { // the server doesn't support table valued arguments for procedures return; } else { throw; } } NuoDbCommand cmd = new NuoDbCommand("nunit_test", connection); cmd.CommandType = CommandType.StoredProcedure; cmd.Prepare(); DataTable table = new DataTable(); table.Columns.Add("f1", typeof(string)); table.Columns.Add("f2", typeof(int)); DataRow row1 = table.NewRow(); row1[0] = "hello"; row1[1] = 0; table.Rows.Add(row1); DataRow row2 = table.NewRow(); row2[0] = "world!"; row2[1] = 0; table.Rows.Add(row2); cmd.Parameters[0].Value = table; cmd.ExecuteNonQuery(); Assert.AreEqual("hello world! ", cmd.Parameters[1].Value); } }
public void TestPrepareParamOut() { using (NuoDbConnection connection = new NuoDbConnection(TestFixture1.connectionString)) { connection.Open(); new NuoDbCommand("drop procedure nunit_test if exists", connection).ExecuteNonQuery(); new NuoDbCommand("create procedure nunit_test(out p1 string) as p1='hello'; end_procedure", connection).ExecuteNonQuery(); NuoDbCommand cmd = new NuoDbCommand("nunit_test", connection); cmd.CommandType = CommandType.StoredProcedure; cmd.Prepare(); Assert.IsTrue(cmd.Parameters.Contains("p1")); Assert.AreEqual(ParameterDirection.Output, cmd.Parameters["p1"].Direction); cmd.ExecuteNonQuery(); Assert.AreEqual("hello", cmd.Parameters["p1"].Value); } }
public void DB4329() { using (NuoDbConnection connection = new NuoDbConnection(TestFixture1.connectionString)) { connection.Open(); Utils.DropTable(connection, "ExpenseTest"); DbCommand createCommand = new NuoDbCommand("Create table ExpenseTest" + "(" + "SourceExpenseId int," + "ExpenseAmount numeric(15,2)" + ")", connection); createCommand.ExecuteNonQuery(); DbCommand insertCommand = new NuoDbCommand("Insert Into ExpenseTest(SourceExpenseId, ExpenseAmount) Values (?,?)", connection); insertCommand.Prepare(); insertCommand.Parameters[0].Value = -1254524; insertCommand.Parameters[1].Value = -135.35; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 100100100; insertCommand.Parameters[1].Value = -1325465.35; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 100100101; insertCommand.Parameters[1].Value = 200000.35; insertCommand.ExecuteNonQuery(); DbCommand selectCommand = new NuoDbCommand("select SourceExpenseId, ExpenseAmount from ExpenseTest", connection); using (DbDataReader reader = selectCommand.ExecuteReader()) { bool hasNext = reader.Read(); Assert.IsTrue(hasNext); Assert.AreEqual(-1254524, reader[0]); Assert.AreEqual(-135.35, reader[1]); hasNext = reader.Read(); Assert.IsTrue(hasNext); Assert.AreEqual(100100100, reader[0]); Assert.AreEqual(-1325465.35, reader[1]); hasNext = reader.Read(); Assert.IsTrue(hasNext); Assert.AreEqual(100100101, reader[0]); Assert.AreEqual(200000.35, reader[1]); } } }
public void TestPrepareLotsOfParams() { using (NuoDbConnection connection = new NuoDbConnection(TestFixture1.connectionString)) { connection.Open(); new NuoDbCommand("drop procedure nunit_test if exists", connection).ExecuteNonQuery(); new NuoDbCommand("create procedure nunit_test(inout p1 string, in p2 string, out p3 int, inout p4 float, in p5 double, out p6 boolean, " + "inout p7 string, in p8 string, out p9 int, inout p10 float, in p11 double, out p12 boolean, " + "inout p13 string, in p14 string, out p15 int, inout p16 float, in p17 double, out p18 boolean, " + "inout p19 string, in p20 string, out p21 int, inout p22 float, in p23 double, out p24 boolean) " + " returns output(p00 string, p01 int, p02 float, p04 double, p05 boolean, p06 blob) " + " as if(p1='goodbye') p1='hello'; end_if; end_procedure", connection).ExecuteNonQuery(); NuoDbCommand cmd = new NuoDbCommand("nunit_test", connection); cmd.CommandType = CommandType.StoredProcedure; cmd.Prepare(); int index = 1; foreach (DbParameter param in cmd.Parameters) { Assert.AreEqual(String.Format("P{0}", index++), param.ParameterName); } Assert.AreEqual(25, index); } }
internal static void CreateHockeyTable() { using (NuoDbConnection connection = new NuoDbConnection(connectionString)) { connection.Open(); try { DbCommand dropCommand = new NuoDbCommand("drop table hockey", connection); dropCommand.ExecuteNonQuery(); } catch (Exception) { // table is allowed to be missing } DbCommand createCommand = new NuoDbCommand("create table Hockey" + "(" + " Id bigint not NULL generated always as identity primary key," + " Number Integer," + " Name String," + " Position String," + " Team String" + ")", connection); createCommand.ExecuteNonQuery(); DbCommand insertCommand = new NuoDbCommand("Insert into Hockey (Number, Name, Position, Team) Values (?,?,?,?)", connection); insertCommand.Prepare(); insertCommand.Parameters[0].Value = 37; insertCommand.Parameters[1].Value = "PATRICE BERGERON"; insertCommand.Parameters[2].Value = "Forward"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 48; insertCommand.Parameters[1].Value = "CHRIS BOURQUE"; insertCommand.Parameters[2].Value = "Forward"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 11; insertCommand.Parameters[1].Value = "GREGORY CAMPBELL"; insertCommand.Parameters[2].Value = "Forward"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 18; insertCommand.Parameters[1].Value = "NATHAN HORTON"; insertCommand.Parameters[2].Value = "Forward"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 23; insertCommand.Parameters[1].Value = "CHRIS KELLY"; insertCommand.Parameters[2].Value = "Forward"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 46; insertCommand.Parameters[1].Value = "DAVID KREJCI"; insertCommand.Parameters[2].Value = "Forward"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 17; insertCommand.Parameters[1].Value = "MILAN LUCIC"; insertCommand.Parameters[2].Value = "Forward"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 64; insertCommand.Parameters[1].Value = "LANE MACDERMID"; insertCommand.Parameters[2].Value = "Forward"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 63; insertCommand.Parameters[1].Value = "BRAD MARCHAND"; insertCommand.Parameters[2].Value = "Forward"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 20; insertCommand.Parameters[1].Value = "DANIEL PAILLE"; insertCommand.Parameters[2].Value = "Forward"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 49; insertCommand.Parameters[1].Value = "RICH PEVERLEY"; insertCommand.Parameters[2].Value = "Forward"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 91; insertCommand.Parameters[1].Value = "MARC SAVARD"; insertCommand.Parameters[2].Value = "Forward"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 19; insertCommand.Parameters[1].Value = "TYLER SEGUIN"; insertCommand.Parameters[2].Value = "Forward"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 22; insertCommand.Parameters[1].Value = "SHAWN THORNTON"; insertCommand.Parameters[2].Value = "Forward"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 55; insertCommand.Parameters[1].Value = "JOHNNY BOYCHUK"; insertCommand.Parameters[2].Value = "Defense"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 33; insertCommand.Parameters[1].Value = "ZDENO CHARA"; insertCommand.Parameters[2].Value = "Defense"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 21; insertCommand.Parameters[1].Value = "ANDREW FERENCE"; insertCommand.Parameters[2].Value = "Defense"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 27; insertCommand.Parameters[1].Value = "DOUGIE HAMILTON"; insertCommand.Parameters[2].Value = "Defense"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 45; insertCommand.Parameters[1].Value = "AARON JOHNSON"; insertCommand.Parameters[2].Value = "Defense"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 54; insertCommand.Parameters[1].Value = "ADAM MCQUAID"; insertCommand.Parameters[2].Value = "Defense"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 44; insertCommand.Parameters[1].Value = "DENNIS SEIDENBERG"; insertCommand.Parameters[2].Value = "Defense"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 35; insertCommand.Parameters[1].Value = "ANTON KHUDOBIN"; insertCommand.Parameters[2].Value = "Goalie"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 40; insertCommand.Parameters[1].Value = "TUUKKA RASK"; insertCommand.Parameters[2].Value = "Goalie"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); insertCommand.Parameters[0].Value = 1; insertCommand.Parameters[1].Value = "MAX SUMMIT"; insertCommand.Parameters[2].Value = "Fan"; insertCommand.Parameters[3].Value = "Bruins"; insertCommand.ExecuteNonQuery(); } }