public void UpdateTimeStampTest()
		{
			string			sql		= "select * from TEST where int_field = @int_field";
			FbTransaction	transaction = this.Connection.BeginTransaction();
			FbCommand		command		= new FbCommand(sql, Connection, transaction);
			FbDataAdapter	adapter		= new FbDataAdapter(command);

			adapter.SelectCommand.Parameters.Add("@int_field", FbDbType.Integer).Value = 1;
			
			FbCommandBuilder builder = new FbCommandBuilder(adapter);

			DataSet ds = new DataSet();
			adapter.Fill(ds, "TEST");

			Assert.AreEqual(1, ds.Tables["TEST"].Rows.Count, "Incorrect row count");

			DateTime dtValue = DateTime.Now;

			ds.Tables["TEST"].Rows[0]["TIMESTAMP_FIELD"] = dtValue;

			adapter.Update(ds, "TEST");

			adapter.Dispose();
			builder.Dispose();
			command.Dispose();

			transaction.Commit();

			transaction = Connection.BeginTransaction();

			sql		= "SELECT timestamp_field FROM TEST WHERE int_field = @int_field";
			command = new FbCommand(sql, Connection, transaction);
			command.Parameters.Add("@int_field", FbDbType.Integer).Value = 1;

			DateTime val = (DateTime)command.ExecuteScalar();

			transaction.Commit();

			Assert.AreEqual(dtValue.Day, val.Day, "timestamp_field has not correct day");
			Assert.AreEqual(dtValue.Month, val.Month, "timestamp_field has not correct month");
			Assert.AreEqual(dtValue.Year, val.Year, "timestamp_field has not correct year");
			Assert.AreEqual(dtValue.Hour, val.Hour, "timestamp_field has not correct hour");
			Assert.AreEqual(dtValue.Minute, val.Minute, "timestamp_field has not correct minute");
			Assert.AreEqual(dtValue.Second, val.Second, "timestamp_field has not correct second");
		}
		public void SubsequentDeletes()
		{
			string selectSql = "SELECT * FROM test";
			string deleteSql = "DELETE FROM test WHERE int_field = @id";

			// Set up conenction and select/delete commands
			FbConnection connection = new FbConnection(this.Connection.ConnectionString);
			FbCommand select = new FbCommand(selectSql, connection);
			FbCommand delete = new FbCommand(deleteSql, connection);
			delete.Parameters.Add("@id", FbDbType.Integer);
			delete.Parameters[0].SourceColumn = "INT_FIELD";
			
			// Set up the FbDataAdapter
			FbDataAdapter adapter = new FbDataAdapter(select);
			adapter.DeleteCommand = delete;

			// Set up dataset
			DataSet ds = new DataSet();
			adapter.Fill(ds);

			// Delete one row
			ds.Tables[0].Rows[0].Delete();
			adapter.Update(ds);

			// Delete another row
			ds.Tables[0].Rows[0].Delete();
			adapter.Update(ds);

			// Delete another row
			ds.Tables[0].Rows[0].Delete();
			adapter.Update(ds);
		}
		public void DeleteTest()
		{
			string			sql		= "select * from TEST where int_field = @int_field";
			FbTransaction	transaction = this.Connection.BeginTransaction();
			FbCommand		command		= new FbCommand(sql, Connection, transaction);
			FbDataAdapter	adapter		= new FbDataAdapter(command);

			adapter.SelectCommand.Parameters.Add("@int_field", FbDbType.Integer).Value = 10;
			
			FbCommandBuilder builder = new FbCommandBuilder(adapter);

			DataSet ds = new DataSet();
			adapter.Fill(ds, "TEST");

			Assert.AreEqual(1, ds.Tables["TEST"].Rows.Count, "Incorrect row count");

			ds.Tables["TEST"].Rows[0].Delete();

			adapter.Update(ds, "TEST");

			adapter.Dispose();
			builder.Dispose();
			command.Dispose();
			transaction.Commit();
		}
		public void UpdateDecimalTest()
		{
			string			sql		= "select * from TEST where int_field = @int_field";
			FbTransaction	transaction = this.Connection.BeginTransaction();
			FbCommand		command		= new FbCommand(sql, Connection, transaction);
			FbDataAdapter	adapter		= new FbDataAdapter(command);

			adapter.SelectCommand.Parameters.Add("@int_field", FbDbType.Integer).Value = 1;
			
			FbCommandBuilder builder = new FbCommandBuilder(adapter);

			DataSet ds = new DataSet();
			adapter.Fill(ds, "TEST");

			Assert.AreEqual(1, ds.Tables["TEST"].Rows.Count, "Incorrect row count");

			ds.Tables["TEST"].Rows[0]["DECIMAL_FIELD"]	= System.Int32.MaxValue;
			
			adapter.Update(ds, "TEST");

			adapter.Dispose();
			builder.Dispose();
			command.Dispose();

			transaction.Commit();

			transaction = Connection.BeginTransaction();

			sql		= "SELECT decimal_field FROM TEST WHERE int_field = @int_field";
			command = new FbCommand(sql, Connection, transaction);
			command.Parameters.Add("@int_field", FbDbType.Integer).Value = 1;

			decimal val = (decimal)command.ExecuteScalar();

			transaction.Commit();

			Assert.AreEqual(System.Int32.MaxValue, val, "decimal_field has not correct value");
		}
		public void UpdateVarCharTest()
		{
			string			sql		= "select * from TEST where int_field = @int_field";
			FbTransaction	transaction = this.Connection.BeginTransaction();
			FbCommand		command		= new FbCommand(sql, Connection, transaction);
			FbDataAdapter	adapter		= new FbDataAdapter(command);

			adapter.SelectCommand.Parameters.Add("@int_field", FbDbType.Integer).Value = 1;
			
			FbCommandBuilder builder = new FbCommandBuilder(adapter);

			DataSet ds = new DataSet();
			adapter.Fill(ds, "TEST");

			Assert.AreEqual(1, ds.Tables["TEST"].Rows.Count, "Incorrect row count");

			ds.Tables["TEST"].Rows[0]["VARCHAR_FIELD"]	= "ONE VAR THOUSAND";

			adapter.Update(ds, "TEST");

			adapter.Dispose();
			builder.Dispose();
			command.Dispose();

			transaction.Commit();

			transaction = Connection.BeginTransaction();

			sql		= "SELECT varchar_field FROM TEST WHERE int_field = @int_field";
			command = new FbCommand(sql, Connection, transaction);			
			command.Parameters.Add("@int_field", FbDbType.Integer).Value = 1;

			string val = (string)command.ExecuteScalar();

			transaction.Commit();

			Assert.AreEqual("ONE VAR THOUSAND", val.Trim(), "varchar_field has not correct value");
		}
		public void InsertTest()
		{
			FbTransaction	transaction = this.Connection.BeginTransaction();
			FbCommand		command		= new FbCommand("select * from TEST", Connection, transaction);
			FbDataAdapter	adapter		= new FbDataAdapter(command);
			
			FbCommandBuilder builder = new FbCommandBuilder(adapter);

			DataSet ds = new DataSet();
			adapter.Fill(ds, "TEST");

			Assert.AreEqual(100, ds.Tables["TEST"].Rows.Count, "Incorrect row count");

			DataRow newRow = ds.Tables["TEST"].NewRow();

			newRow["int_field"]			= 101;
			newRow["CHAR_FIELD"]		= "ONE THOUSAND";
			newRow["VARCHAR_FIELD"]		= ":;,.{}`+^*[]\\!|@#$%&/()?_-<>";
			newRow["BIGint_field"]		= 100000;
			newRow["SMALLint_field"]	= 100;
			newRow["DOUBLE_FIELD"]		= 100.01;
			newRow["NUMERIC_FIELD"]		= 100.01;
			newRow["DECIMAL_FIELD"]		= 100.01;
			newRow["DATE_FIELD"]		= new DateTime(100, 10, 10);
			newRow["TIME_FIELD"]		= new DateTime(100, 10, 10, 10, 10, 10, 10);
			newRow["TIMESTAMP_FIELD"]	= new DateTime(100, 10, 10, 10, 10, 10, 10);
			newRow["CLOB_FIELD"]		= "ONE THOUSAND";

			ds.Tables["TEST"].Rows.Add(newRow);

			adapter.Update(ds, "TEST");

			adapter.Dispose();
			builder.Dispose();
			command.Dispose();
			transaction.Commit();
		}