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(); } }
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 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 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.AreEqual("hello", e.Message); } } }
internal static void CreateHockeyTable() { using (NuoDbConnection connection = new NuoDbConnection(TestFixture1.connectionString)) { connection.Open(); DropTable(connection, "hockey"); 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(); } }
private void WriteToServer(Feeder feeder) { if (this.tableName.Length == 0) { throw new ArgumentException("The name of the destination table hasn't been specified", "DestinationTableName"); } StringBuilder builder = new StringBuilder(); builder.Append("INSERT INTO `"); builder.Append(this.tableName.Replace("`", "``")); builder.Append("` "); if (mappings.Count == 0) { // the target table has the same number and names of the columns as in the specified input rows builder.Append("VALUES ("); for (int i = 0; i < feeder.FieldCount; i++) { if (i != 0) { builder.Append(", "); } builder.Append("?"); } builder.Append(")"); } else { DataRowCollection targetColumns = null; builder.Append(" ("); for (int i = 0; i < mappings.Count; i++) { NuoDbBulkLoaderColumnMapping mapping = mappings[i]; if (i != 0) { builder.Append(", "); } builder.Append("`"); if (mapping.DestinationColumn == null) { // we are requested to map to a target column that is identified with its ordinal number, so // fetch the schema of the target table to find out what is its name if (targetColumns == null) { // split the destination table into its different parts string[] parts = this.tableName.Split(new char[] { '.' }); DataTable targetSchema = this.connection.GetSchema("Columns", new string[] { null, // catalog parts.Length == 2 ? parts[0] : null, // schema parts.Length == 2 ? parts[1] : parts[0] // table }); targetColumns = targetSchema.Rows; } if (mapping.DestinationOrdinal < 0 || mapping.DestinationOrdinal > targetColumns.Count) { throw new IndexOutOfRangeException(String.Format("The specified ordinal of the target column ({0}) is outside the range of the column count ({1}) of table {2}", new object[] { mapping.DestinationOrdinal, targetColumns.Count, this.tableName })); } string columnName = (string)(targetColumns[mapping.DestinationOrdinal]["COLUMN_NAME"]); builder.Append(columnName.Replace("`", "``")); } else { builder.Append(mapping.DestinationColumn.Replace("`", "``")); } builder.Append("`"); } builder.Append(") VALUES ("); for (int i = 0; i < mappings.Count; i++) { if (i != 0) { builder.Append(", "); } builder.Append("?"); } builder.Append(")"); } string sqlString = builder.ToString(); #if DEBUG System.Diagnostics.Trace.WriteLine("NuoDbBulkLoader::WriteToServer: " + sqlString); #endif if (this.connection.State != ConnectionState.Open) { this.connection.Open(); } using (NuoDbCommand command = new NuoDbCommand(sqlString, this.connection)) { command.Prepare(); int totalSize = 0; // do the check for out-of-range values just once foreach (NuoDbBulkLoaderColumnMapping mapping in mappings) { if (mapping.SourceColumn == null && mapping.SourceOrdinal < 0 || mapping.SourceOrdinal > feeder.FieldCount) { throw new IndexOutOfRangeException(String.Format("The specified ordinal of the source column ({0}) is outside the range of the column count ({1})", new object[] { mapping.SourceOrdinal, feeder.FieldCount })); } } while (true) { EncodedDataStream dataStream = new RemEncodedStream(connection.InternalConnection.protocolVersion); dataStream.startMessage(Protocol.ExecuteBatchPreparedStatement); dataStream.encodeInt(command.handle); int batchCount = 0; for (; batchCount < this.batchSize && feeder.MoveNext(); batchCount++) { dataStream.encodeInt(command.Parameters.Count); if (mappings.Count == 0) { for (int i = 0; i < feeder.FieldCount; i++) { dataStream.encodeDotNetObject(feeder[i]); } } else { foreach (NuoDbBulkLoaderColumnMapping mapping in mappings) { if (mapping.SourceColumn == null) { dataStream.encodeDotNetObject(feeder[mapping.SourceOrdinal]); } else { dataStream.encodeDotNetObject(feeder[mapping.SourceColumn]); } } } } // the iterator hasn't found any more data to import, let's break out if (batchCount == 0) { break; } dataStream.encodeInt(-1); dataStream.encodeInt(batchCount); totalSize += batchCount; #if DEBUG System.Diagnostics.Trace.WriteLine("NuoDbBulkLoader::WriteToServer: sending a batch of " + batchCount + " rows"); #endif this.connection.InternalConnection.sendAndReceive(dataStream); bool hasErrors = false; string errorMessage = string.Empty; for (int i = 0; i < batchCount; i++) { int result = dataStream.getInt(); if (result == EXECUTE_FAILED) { if (this.connection.InternalConnection.protocolVersion >= Protocol.PROTOCOL_VERSION6) { int sqlCode = dataStream.getInt(); string message = dataStream.getString(); errorMessage = AppendError(errorMessage, message, i); } hasErrors = true; } } if (this.connection.InternalConnection.protocolVersion >= Protocol.PROTOCOL_VERSION3) { long txnId = dataStream.getLong(); int nodeId = dataStream.getInt(); long commitSequence = dataStream.getLong(); this.connection.InternalConnection.setLastTransaction(txnId, nodeId, commitSequence); } if (handlers.Count != 0) { BatchProcessedEventHandler[] tmpArray = new BatchProcessedEventHandler[handlers.Count]; handlers.CopyTo(tmpArray); BatchProcessedEventArgs args = new BatchProcessedEventArgs(); args.BatchSize = batchCount; args.TotalSize = totalSize; args.HasErrors = hasErrors; foreach (BatchProcessedEventHandler h in tmpArray) { h.Invoke(this, args); } } if (hasErrors) { throw new NuoDbSqlException(errorMessage, NuoDbSqlCode.FindError("BATCH_UPDATE_ERROR")); } } } }
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 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); } }
private void WriteToServer(Feeder feeder) { if (this.tableName.Length == 0) throw new ArgumentException("The name of the destination table hasn't been specified", "DestinationTableName"); StringBuilder builder = new StringBuilder(); builder.Append("INSERT INTO `"); builder.Append(this.tableName.Replace("`", "``")); builder.Append("` "); if (mappings.Count == 0) { // the target table has the same number and names of the columns as in the specified input rows builder.Append("VALUES ("); for (int i = 0; i < feeder.FieldCount; i++) { if (i != 0) builder.Append(", "); builder.Append("?"); } builder.Append(")"); } else { DataRowCollection targetColumns = null; builder.Append(" ("); for(int i=0;i<mappings.Count;i++) { NuoDbBulkLoaderColumnMapping mapping = mappings[i]; if (i != 0) builder.Append(", "); builder.Append("`"); if (mapping.DestinationColumn == null) { // we are requested to map to a target column that is identified with its ordinal number, so // fetch the schema of the target table to find out what is its name if (targetColumns == null) { // split the destination table into its different parts string[] parts = this.tableName.Split(new char[] { '.' }); DataTable targetSchema = this.connection.GetSchema("Columns", new string[] { null, // catalog parts.Length == 2 ? parts[0] : null, // schema parts.Length == 2 ? parts[1] : parts[0] // table }); targetColumns = targetSchema.Rows; } if (mapping.DestinationOrdinal < 0 || mapping.DestinationOrdinal > targetColumns.Count) throw new IndexOutOfRangeException(String.Format("The specified ordinal of the target column ({0}) is outside the range of the column count ({1}) of table {2}", new object[] { mapping.DestinationOrdinal, targetColumns.Count, this.tableName })); string columnName = (string)(targetColumns[mapping.DestinationOrdinal]["COLUMN_NAME"]); builder.Append(columnName.Replace("`", "``")); } else builder.Append(mapping.DestinationColumn.Replace("`", "``")); builder.Append("`"); } builder.Append(") VALUES ("); for (int i = 0; i < mappings.Count; i++) { if (i != 0) builder.Append(", "); builder.Append("?"); } builder.Append(")"); } string sqlString = builder.ToString(); #if DEBUG System.Diagnostics.Trace.WriteLine("NuoDbBulkLoader::WriteToServer: "+sqlString); #endif if (this.connection.State != ConnectionState.Open) this.connection.Open(); using (NuoDbCommand command = new NuoDbCommand(sqlString, this.connection)) { command.Prepare(); int totalSize = 0; // do the check for out-of-range values just once foreach (NuoDbBulkLoaderColumnMapping mapping in mappings) { if (mapping.SourceColumn == null && mapping.SourceOrdinal < 0 || mapping.SourceOrdinal > feeder.FieldCount) throw new IndexOutOfRangeException(String.Format("The specified ordinal of the source column ({0}) is outside the range of the column count ({1})", new object[] { mapping.SourceOrdinal, feeder.FieldCount })); } while (true) { EncodedDataStream dataStream = new RemEncodedStream(connection.InternalConnection.protocolVersion); dataStream.startMessage(Protocol.ExecuteBatchPreparedStatement); dataStream.encodeInt(command.handle); int batchCount = 0; for (; batchCount < this.batchSize && feeder.MoveNext(); batchCount++) { dataStream.encodeInt(command.Parameters.Count); if (mappings.Count == 0) { for (int i = 0; i < feeder.FieldCount; i++) { dataStream.encodeDotNetObject(feeder[i]); } } else { foreach (NuoDbBulkLoaderColumnMapping mapping in mappings) { if (mapping.SourceColumn == null) { dataStream.encodeDotNetObject(feeder[mapping.SourceOrdinal]); } else { dataStream.encodeDotNetObject(feeder[mapping.SourceColumn]); } } } } // the iterator hasn't found any more data to import, let's break out if (batchCount == 0) break; dataStream.encodeInt(-1); dataStream.encodeInt(batchCount); totalSize += batchCount; #if DEBUG System.Diagnostics.Trace.WriteLine("NuoDbBulkLoader::WriteToServer: sending a batch of " + batchCount + " rows"); #endif this.connection.InternalConnection.sendAndReceive(dataStream); string firstViolationString = ""; int firstViolation = 0; bool haserrors = false; for (int i = 0; i < batchCount; i++) { int result = dataStream.getInt(); if (result == EXECUTE_FAILED) { if (this.connection.InternalConnection.protocolVersion >= Protocol.PROTOCOL_VERSION6) { int status = dataStream.getInt(); string s = dataStream.getString(); // Only take the first constraint violation. if (NuoDbSqlCode.FindCode(status).SQLState.Equals("CONSTRAINT_ERROR") && firstViolation == 0) { firstViolation = status; firstViolationString = s; } } haserrors = true; } } if (this.connection.InternalConnection.protocolVersion >= Protocol.PROTOCOL_VERSION3) { long txnId = dataStream.getLong(); int nodeId = dataStream.getInt(); long commitSequence = dataStream.getLong(); this.connection.InternalConnection.setLastTransaction(txnId, nodeId, commitSequence); } if (handlers.Count != 0) { BatchProcessedEventHandler[] tmpArray = new BatchProcessedEventHandler[handlers.Count]; handlers.CopyTo(tmpArray); BatchProcessedEventArgs args = new BatchProcessedEventArgs(); args.BatchSize = batchCount; args.TotalSize = totalSize; args.HasErrors = haserrors; foreach (BatchProcessedEventHandler h in tmpArray) { h.Invoke(this, args); } } if (haserrors) { if (firstViolation == 0) { throw new NuoDbSqlException("", NuoDbSqlCode.FindError("BATCH_UPDATE_ERROR")); } else { throw new NuoDbSqlException(firstViolationString, NuoDbSqlCode.FindError("BATCH_UPDATE_ERROR")); } } } } }
public void TestUTFParams() { NuoDbConnection connection = new NuoDbConnection(connectionString); connection.Open(); Utils.DropTable(connection, "temp"); string utf8String = "z a \u0306 \u01FD \u03B2"; new NuoDbCommand("create table temp (col1 string)", connection).ExecuteNonQuery(); using (NuoDbCommand cmd = new NuoDbCommand("insert into temp values (?)", connection)) { cmd.Prepare(); cmd.Parameters[0].Value = utf8String; Assert.AreEqual(1, cmd.ExecuteNonQuery()); } using (NuoDbCommand cmd = new NuoDbCommand("select * from temp", connection)) { using (DbDataReader reader = cmd.ExecuteReader()) { Assert.IsTrue(reader.Read()); Assert.AreEqual(utf8String, reader.GetString(0)); } } }