コード例 #1
23
		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");
		}
コード例 #2
0
		public override DataTable ExecuteQueryAsDataTable (string sql)
		{
			if (String.IsNullOrEmpty ("sql"))
				throw new ArgumentException ("sql");

			DataTable table = new DataTable ();
			using (IDbCommand command = CreateCommand (sql)) {
				using (FbDataAdapter adapter = new FbDataAdapter (command as FbCommand)) {
					try {
						adapter.Fill (table);
					} catch {
					} finally {
						command.Connection.Close ();
					}
				}
			}
			return table;
コード例 #3
0
		public void FillTest()
		{
			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");

			Console.WriteLine();
			Console.WriteLine("DataAdapter - Fill Method - Test");

			foreach (DataTable table in ds.Tables)
			{
				foreach (DataColumn col in table.Columns)
				{
					Console.Write(col.ColumnName + "\t\t");
				}
				
				Console.WriteLine();
				
				foreach (DataRow row in table.Rows)
				{
					for (int i = 0; i < table.Columns.Count; i++)
					{
						Console.Write(row[i] + "\t\t");
					}

					Console.WriteLine("");
				}
			}

			adapter.Dispose();
			builder.Dispose();
			command.Dispose();
			transaction.Commit();
		}
コード例 #4
0
        /// <include file='Doc/en_EN/FbCommandBuilder.xml' path='doc/class[@name="FbCommandBuilder"]/method[@name="Dispose(System.Boolean)"]/*'/>
        protected override void Dispose(bool disposing)
        {
            if (!this.disposed)
            {
                try
                {
                    if (disposing)
                    {
                        // Clear generated commands
                        this.RefreshSchema();

                        // Clear FbDataAdapter handler if needed
                        if (this.adapterHandler != null)
                        {
                            this.dataAdapter.RowUpdating -= adapterHandler;
                        }

                        // Clear fields
                        this.sqlInsert           = null;
                        this.sqlUpdate           = null;
                        this.sqlDelete           = null;
                        this.whereClausule1      = null;
                        this.whereClausule2      = null;
                        this.setClausule         = null;
                        this.separator           = null;
                        this.quotePrefix         = null;
                        this.quoteSuffix         = null;
                        this.dataAdapter         = null;
                        this.timestampColumnName = null;
                    }

                    // release any unmanaged resources

                    this.disposed = true;
                }
                finally
                {
                    base.Dispose(disposing);
                }
            }
        }
コード例 #5
0
		public void FillMultipleTest()
		{
			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 ds1 = new DataSet();
			DataSet ds2 = new DataSet();
			
			adapter.Fill(ds1, "TEST");
			adapter.Fill(ds2, "TEST");

			Assert.AreEqual(100, ds1.Tables["TEST"].Rows.Count, "Incorrect row count (ds1)");
			Assert.AreEqual(100, ds2.Tables["TEST"].Rows.Count, "Incorrect row count (ds2)");
			
			adapter.Dispose();
			builder.Dispose();
			command.Dispose();
			transaction.Commit();
		}
コード例 #6
0
		public void DataAdapterFillTest()
		{
			FbCommand		command = new FbCommand("select * from TEST where DATE_FIELD = ?", Connection);
			FbDataAdapter	adapter = new FbDataAdapter(command);

			adapter.SelectCommand.Parameters.Add("@DATE_FIELD", FbDbType.Date, 4, "DATE_FIELD").Value = new DateTime(2003, 1, 5);
			
			FbCommandBuilder builder = new FbCommandBuilder(adapter);

			DataSet ds = new DataSet();
			adapter.Fill(ds, "TEST");
			
			Console.WriteLine();
			Console.WriteLine("Implicit transactions - DataAdapter Fill Method - Test");

			foreach (DataTable table in ds.Tables)
			{
				foreach (DataColumn col in table.Columns)
				{
					Console.Write(col.ColumnName + "\t\t");
				}
				
				Console.WriteLine();
				
				foreach (DataRow row in table.Rows)
				{
					for (int i = 0; i < table.Columns.Count; i++)
					{
						Console.Write(row[i] + "\t\t");
					}

					Console.WriteLine("");
				}
			}

			adapter.Dispose();
			builder.Dispose();
			command.Dispose();
		}
コード例 #7
0
ファイル: Persistent.cs プロジェクト: adesproject/ADES
        private void OpenDbConnection(string db, string uid, string pwd)
        {
            try
              {
            FbConnectionStringBuilder cs = new FbConnectionStringBuilder();

            cs.DataSource = "localhost";
            cs.Database = database;
            cs.UserID = userID;
            cs.Password = password;
            cs.Dialect = 3;
            dbSource = cs.ToString();

            dbConnection = new FbConnection (dbSource);
            dbConnection.Open ();
            dbCommand = new FbCommand (null, dbConnection);
            dbDataAdapter = new FbDataAdapter (dbCommand);
              }
              catch
              {
            dbConnection = null;
            IO.Error ("Unable to open database connection:\n{0}", dbSource);
              }
        }
コード例 #8
0
        public void MultipleResultsetTest()
		{
			FbCommand command = new FbCommand("", this.Connection);

			command.CommandText = "select * from test;";
			command.CommandText += "select int_field from test;";
			command.CommandText += "select int_field, char_field from test;";

			FbDataAdapter adapter = new FbDataAdapter(command);

			DataSet ds = new DataSet();

			adapter.Fill(ds);

            Assert.AreEqual(3, ds.Tables.Count, "Incorrect tables count");
        }
コード例 #9
0
		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);
		}
コード例 #10
0
		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();
		}
コード例 #11
0
		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");
		}
コード例 #12
0
		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();
		}
コード例 #13
0
		/// <include file='Doc/en_EN/FbCommandBuilder.xml' path='doc/class[@name="FbCommandBuilder"]/method[@name="Dispose(System.Boolean)"]/*'/>
		protected override void Dispose(bool disposing)
		{
			if (!this.disposed)
			{
				try
				{
					if (disposing)
					{
						// Clear generated commands
						this.RefreshSchema();

						// Clear FbDataAdapter handler if needed
						if (this.adapterHandler != null)
						{
							this.dataAdapter.RowUpdating -= adapterHandler;
						}

						// Clear fields
						this.sqlInsert		= null;
						this.sqlUpdate		= null;
						this.sqlDelete		= null;
						this.whereClausule1 = null;
						this.whereClausule2 = null;
						this.setClausule	= null;
						this.separator		= null;
						this.quotePrefix	= null;
						this.quoteSuffix	= null;
						this.dataAdapter	= null;
						this.timestampColumnName = null;
					}

					// release any unmanaged resources

					this.disposed = true;
				}
				finally
				{
					base.Dispose(disposing);
				}
			}
		}
コード例 #14
0
		/// <include file='Doc/en_EN/FbCommandBuilder.xml' path='doc/class[@name="FbCommandBuilder"]/property[@name="ctor(FbDataAdapter)"]/*'/>
		public FbCommandBuilder(FbDataAdapter adapter) : this()
		{
			this.DataAdapter = adapter;
		}
コード例 #15
0
 /// <include file='Doc/en_EN/FbCommandBuilder.xml' path='doc/class[@name="FbCommandBuilder"]/property[@name="ctor(FbDataAdapter)"]/*'/>
 public FbCommandBuilder(FbDataAdapter adapter) : this()
 {
     this.DataAdapter = adapter;
 }
コード例 #16
0
		public override void SetUp()
		{
			base.SetUp();
			adapter = new FbDataAdapter(new FbCommand("select * from TEST where VARCHAR_FIELD = ?", Connection));
		}
コード例 #17
0
		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");
		}
コード例 #18
0
ファイル: Firebird.cs プロジェクト: Avaruz/Avaruz.FrameWork
		/// <summary>
		/// Execute a FbCommand (that returns a resultset) against the provided FbConnection. 
		/// </summary>
		/// <example>
		/// <code>
		/// XmlReader r = helper.ExecuteXmlReader(command);
		/// </code></example>
		/// <param name="command">The IDbCommand to execute</param>
		/// <returns>An XmlReader containing the resultset generated by the command</returns>
		public override XmlReader ExecuteXmlReader(IDbCommand command)
		{
			bool mustCloseConnection = false;

			if (command.Connection.State != ConnectionState.Open) 
			{
				command.Connection.Open();
				mustCloseConnection = true;
			}

			CleanParameterSyntax(command);

			FbDataAdapter da = new FbDataAdapter((FbCommand)command);
			DataSet ds = new DataSet();

			da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
			da.Fill(ds);

			StringReader stream = new StringReader(ds.GetXml());
			if (mustCloseConnection)
			{
				command.Connection.Close();
			}

			return new XmlTextReader(stream);
		}