コード例 #1
0
        private void GetProductList()
        {
            var sw = new System.Diagnostics.Stopwatch();

            sw.Start();

            CdbcConnection con = UtilCommon.getConnection();

            string cmdQuery = "SELECT P.PRODUCT_CODE "
                              + "     , P.PRODUCT_NAME "
                              + "     , P.PRODUCT_PRICE "
                              + "     , P.CURRENCY_CODE "
                              + "     , P.PRODUCT_SUMMARY "
                              + "     , P.CATEGORY_CODE "
                              + "     , CA.CATEGORY_NAME "
                              + "  FROM PRODUCTS P "
                              + " INNER JOIN CATEGORIES CA "
                              + "    ON P.CATEGORY_CODE = CA.CATEGORY_CODE "
                              + " ORDER BY P.PRODUCT_CODE  ";

            // Create the OracleCommand
            CdbcCommand cmd = new CdbcCommand(cmdQuery);

            cmd.Connection  = con;
            cmd.CommandType = CommandType.Text;


            dataSetProducts1.PRODUCTS.Clear();
            CdbcDataAdapter dataAdapter = new CdbcDataAdapter(cmd);

            try
            {
                dataAdapter.Fill(dataSetProducts1, dataSetProducts1.PRODUCTS.TableName);
            }
            catch (Exception Ex)
            {
                MessageBox.Show(Ex.Message,
                                "Error",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error)
                ;
            }
            cmd.Dispose();

            sw.Stop();
            this.Text = $"{sw.ElapsedMilliseconds} ms";
        }
コード例 #2
0
        public static void DataAdapter_Fill_Sample()
        {
            Console.WriteLine(String.Format("{0} DataAdapter_Fill_Sample", databaseProductType.ToString()));

            Console.WriteLine("Start");

            CdbcConnection con      = UtilCommon.getConnection(databaseProductType);
            string         queryStr = "SELECT :VAR1 AS COLUMN1 FROM DUAL";
            CdbcCommand    cmd      = new CdbcCommand(queryStr, con);

            string        guid = Guid.NewGuid().ToString();
            CdbcParameter para = new CdbcParameter(":VAR1", CdbcOracleDbType.Varchar2);

            para.Direction = ParameterDirection.Input;
            para.Value     = guid;
            cmd.Parameters.Add(para);

            try
            {
                CdbcDataAdapter adap = new CdbcDataAdapter(cmd);
                DataSet         ds   = new DataSet();
                adap.Fill(ds);

                Console.WriteLine("--------------------------");
                Console.WriteLine("Sql : " + queryStr);
                Console.WriteLine("Parameter : VAR1=" + guid);
                Console.WriteLine("--------------------------");

                Console.WriteLine("Expected value:" + guid);

                if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    Console.WriteLine("Actual value:" + ds.Tables[0].Rows[0][0]);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception:");
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine("--------------------------");
            Console.WriteLine("End");
        }
コード例 #3
0
        public static CdbcConnection getConnection()
        {
            CdbcConnection con = new CdbcConnection();

            con.UserId       = UtilCommon.userId;
            con.UserPassword = UtilCommon.userPassword;


            //You should encrypt the ApplicationId and ApplicationPsk to prevent leak.
            con.ApplicationId  = ConfigurationManager.AppSettings["ApplicationId"];
            con.ApplicationPsk = ConfigurationManager.AppSettings["ApplicationPsk"];

            con.ConnectionString = ConfigurationManager.AppSettings["ConnectionString"];

            con.DatabaseProduct = DatabaseProductType.Oracle;
            con.Compress        = false;
            con.Encrypt         = false;
            return(con);
        }
コード例 #4
0
        private void GetProductList()
        {
            CdbcConnection con = UtilCommon.getConnection();

            string cmdQuery = "SELECT P.PRODUCT_CODE "
                              + "     , P.PRODUCT_NAME "
                              + "     , P.PRODUCT_PRICE "
                              + "     , P.CURRENCY_CODE "
                              + "     , P.PRODUCT_SUMMARY "
                              + "     , P.CATEGORY_CODE "
                              + "     , C.CATEGORY_NAME "
                              + "  FROM PRODUCTS P "
                              + " INNER JOIN CATEGORIES C "
                              + "    ON P.CATEGORY_CODE = C.CATEGORY_CODE "
                              + " ORDER BY P.PRODUCT_CODE  ";

            // Create the OracleCommand
            CdbcCommand cmd = new CdbcCommand(cmdQuery);

            cmd.Connection  = con;
            cmd.CommandType = CommandType.Text;
            CdbcDataAdapter dataAdapter = new CdbcDataAdapter(cmd);
            DataSet         dsProduct   = new DataSet();

            try
            {
                dataAdapter.Fill(dsProduct, "PRODUCTS");

                ListView1.DataSource = dsProduct;
                ListView1.DataMember = "PRODUCTS";

                ListView1.DataBind();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                //Please treat the exception here
                lblError.Text    = "Error:" + ex.Message;
                lblInfo.Visible  = true;
                lblError.Visible = true;
            }
        }
コード例 #5
0
        public static void DataAdapter_FillSchema_Sample()
        {
            Console.WriteLine(String.Format("{0} DataAdapter_FillSchema_Sample", databaseProductType.ToString()));
            Console.WriteLine("Start");

            CdbcConnection  con      = UtilCommon.getConnection(databaseProductType);
            string          queryStr = "SELECT * FROM USER_TABLES";
            CdbcCommand     cmd      = new CdbcCommand(queryStr, con);
            CdbcDataAdapter adap     = new CdbcDataAdapter(cmd);
            DataTable       dt1      = new DataTable();

            Console.WriteLine("--------------------------");
            Console.WriteLine("Sql : " + queryStr);
            Console.WriteLine("--------------------------");
            Console.WriteLine("Result:");



            try
            {
                DataTable dt2 = adap.FillSchema(dt1, SchemaType.Mapped);

                for (int iColumn = 0; iColumn < dt1.Columns.Count; iColumn++)
                {
                    Console.WriteLine(String.Format("ColumnName:{0}  DataType:{1}  MaxLength:{2}", dt1.Columns[iColumn].ColumnName, dt1.Columns[iColumn].DataType, dt1.Columns[iColumn].MaxLength));
                }

                for (int iColumn = 0; iColumn < dt2.Columns.Count; iColumn++)
                {
                    Console.WriteLine(String.Format("ColumnName:{0}  DataType:{1}  MaxLength:{2}", dt2.Columns[iColumn].ColumnName, dt2.Columns[iColumn].DataType, dt2.Columns[iColumn].MaxLength));
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception:");
                Console.WriteLine(ex.Message);
            }


            Console.WriteLine("End");
        }
コード例 #6
0
        private void getCategoryCurrencyList()
        {
            CdbcConnection con = UtilCommon.getConnection();


            CdbcDataAdapter dataAdapter = new CdbcDataAdapter();
            //CATEGORIES
            string cmdQuery = "SELECT C.CATEGORY_CODE "
                              + "     , C.CATEGORY_NAME "
                              + "  FROM CATEGORIES C "
                              + " ORDER BY C.CATEGORY_CODE";
            CdbcCommand cmd = new CdbcCommand(cmdQuery, con);

            dataAdapter.AddMultiSelectCommand(cmd, dsCategoriesCurrencies.CATEGORIES.TableName);

            //CURRENCIES
            cmdQuery = "SELECT C.CURRENCY_CODE "
                       + "     , C.CURRENCY_SYMBOL "
                       + "  FROM CURRENCIES C "
                       + " ORDER BY C.CURRENCY_CODE";
            cmd = new CdbcCommand(cmdQuery, con);
            dataAdapter.AddMultiSelectCommand(cmd, dsCategoriesCurrencies.CURRENCIES.TableName);


            try
            {
                dsCategoriesCurrencies = new DataSetProducts();
                int[] fillResult = dataAdapter.MultiFill(dsCategoriesCurrencies);
            }
            catch (Exception Ex)
            {
                MessageBox.Show(Ex.Message,
                                "Error",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error)
                ;
            }
        }
コード例 #7
0
        public static void Command_ExecuteScalar_Sample()
        {
            Console.WriteLine(String.Format("{0} Command_ExecuteScalar_Sample", databaseProductType.ToString()));

            Console.WriteLine("Start");

            CdbcConnection con      = UtilCommon.getConnection(databaseProductType);
            string         queryStr = @"SELECT :VAR1 AS A FROM DUAL";
            CdbcCommand    cmd      = new CdbcCommand(queryStr, con);

            string guid = Guid.NewGuid().ToString();

            CdbcParameter para = new CdbcParameter(":VAR1", CdbcOracleDbType.Varchar2);

            para.Value = guid;
            cmd.Parameters.Add(para);


            Console.WriteLine("--------------------------");
            Console.WriteLine("Sql : " + queryStr);
            Console.WriteLine("Parameter : VAR1=" + guid);
            Console.WriteLine("--------------------------");

            try
            {
                object o = cmd.ExecuteScalar();
                Console.WriteLine("Expected value:" + guid);
                Console.WriteLine("Actual value:" + o.ToString());
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception:");
                Console.WriteLine(ex.Message);
            }

            Console.WriteLine("--------------------------");
            Console.WriteLine("End");
        }
コード例 #8
0
        public static void DataAdapter_Update_Sample()
        {
            Console.WriteLine(String.Format("{0} DataAdapter_Update_Sample", databaseProductType.ToString()));
            Console.WriteLine("Start");
            Console.WriteLine("This sample will show you how to use CdbcDataAdapter.update insert ,update and delete data.");

            string guid = Guid.NewGuid().ToString();

            CdbcConnection con = UtilCommon.getConnection(databaseProductType);


            try
            {
                //Sample 1 :Add new row (insert)
                Console.WriteLine("--------------------------");
                Console.WriteLine("Sample 1 : Insert a record into table CODE_SAMPLE");
                Console.WriteLine("--------------------------");

                string             queryStrInsert = @"SELECT VAR1,NUM1,DATE1,CLOB1,BLOB1 FROM CODE_SAMPLE WHERE VAR1=:VAR1";
                CdbcCommand        cmdInsert      = new CdbcCommand(queryStrInsert, con);
                CdbcDataAdapter    adapInsert     = new CdbcDataAdapter(cmdInsert);
                CdbcCommandBuilder cb             = new CdbcCommandBuilder(adapInsert);
                DataTable          dt1            = new DataTable();


                adapInsert.FillSchema(dt1, SchemaType.Mapped);

                DataRow dr1 = dt1.NewRow();
                dr1["VAR1"]  = guid;
                dr1["NUM1"]  = DateTime.Now.Second;
                dr1["DATE1"] = DateTime.Now;
                dr1["CLOB1"] = "testclob";
                //  dr1["BLOB1"] = System.IO.File.ReadAllBytes(@"your file path");
                dt1.Rows.Add(dr1);
                int i = adapInsert.Update(dt1);
                Console.WriteLine(String.Format("{0} Line(s) inserted.", i));


                //Sample 2 :Edit row data (update)

                Console.WriteLine("--------------------------");
                Console.WriteLine("Sample 2 : update the record we inserted before.");
                Console.WriteLine("--------------------------");

                string        queryStrUpdate = @"SELECT VAR1,NUM1,DATE1,CLOB1,BLOB1 FROM CODE_SAMPLE WHERE VAR1=:VAR1";
                CdbcCommand   cmdUpdate      = new CdbcCommand(queryStrUpdate, con);
                CdbcParameter para           = new CdbcParameter(":VAR1", CdbcOracleDbType.Varchar2);
                para.Value = guid;
                cmdUpdate.Parameters.Add(para);

                CdbcDataAdapter    adapUpdate = new CdbcDataAdapter(cmdUpdate);
                CdbcCommandBuilder cbUpdate   = new CdbcCommandBuilder(adapUpdate);
                DataSet            dsUpdate   = new DataSet();
                adapUpdate.Fill(dsUpdate);
                dsUpdate.Tables[0].Rows[0]["NUM1"]  = DateTime.Now.Second;
                dsUpdate.Tables[0].Rows[0]["DATE1"] = DateTime.Now;

                i = adapUpdate.Update(dsUpdate, dsUpdate.Tables[0].TableName);

                Console.WriteLine(String.Format("{0} Line(s) updated.", i));

                //Sample 3 :Delete row  (delete)
                Console.WriteLine("--------------------------");
                Console.WriteLine("Sample 3 : Delete the record we inserted before.");
                Console.WriteLine("--------------------------");

                DataSet dsDelete = new DataSet();
                adapUpdate.Fill(dsDelete);
                dsDelete.Tables[0].Rows[0].Delete();
                i = adapUpdate.Update(dsDelete.Tables[0]);
                //The following code will have same result.
                //i = adapUpdate.Update(dsDelete, dsDelete.Tables[0].TableName);

                Console.WriteLine(String.Format("{0} Line(s) Deleted.", i));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception:");
                Console.WriteLine(ex.Message);
            }

            Console.WriteLine("end");
        }
コード例 #9
0
        public static void Dapper_ExecuteMany_Sample()
        {
            Console.WriteLine(String.Format("{0} Dapper_ExecuteMany_Sample", databaseProductType.ToString()));
            Console.WriteLine("Start");

            CdbcConnection con       = UtilCommon.getConnection(databaseProductType);
            string         sqlInsert = @"INSERT INTO student(studentid, studentname, birthdate, photo) VALUES (:studentid, :studentname, :birthdate, :photo)";
            string         sqlUpdate = @"UPDATE student SET studentname=:studentname, birthdate=:birthdate, photo=:photo WHERE studentid=:studentid";
            string         sqlDelete = @"DELETE FROM student WHERE studentid in (:studentid1,:studentid2)";
            string         sqlSelect = @"SELECT studentid, studentname, birthdate, photo FROM student ORDER BY studentid";

            int studentid1 = new System.Random(DateTime.Now.Millisecond).Next(1000);
            int studentid2 = studentid1 + 1;

            byte[] photo1 = null;
            //You can use the following code to insert the photo.
            //byte[] photo1=System.IO.File.ReadAllBytes(@"photo file path");

            var student1 = new Student()
            {
                studentid = studentid1, studentname = "Tom Inserted", birthdate = new DateTime(2004, 1, 21), photo = photo1
            };
            var student2 = new Student()
            {
                studentid = studentid2, studentname = "Jack Inserted", birthdate = new DateTime(2004, 2, 22), photo = photo1
            };

            try
            {
                //Insert
                int i = con.Execute(sqlInsert,
                                    new[]
                                    { student1,
                                      student2 }
                                    );

                Console.WriteLine("--------------------------");
                Console.WriteLine("Insert Sql : " + sqlInsert);
                Console.WriteLine("student1 parameter: " + student1.ToString());
                Console.WriteLine("student2 parameter: " + student2.ToString());
                Console.WriteLine(String.Format("{0} Line(s) inserted.", i));

                List <Student> studentDb = (List <Student>)con.Query <Student>(sqlSelect);
                foreach (Student student in studentDb)
                {
                    Console.WriteLine("Student inserted result: " + student.ToString());
                }

                //update
                //We will change the student's name and birthday then update database.
                student1.studentname = "Tom Updated";
                student1.birthdate   = new DateTime(2004, 3, 21);

                student2.studentname = "Jack Updated";
                student2.birthdate   = new DateTime(2004, 4, 21);

                i = con.Execute(sqlUpdate,
                                new[]
                                { student1,
                                  student2 }
                                );

                Console.WriteLine("--------------------------");
                Console.WriteLine("Update Sql : " + sqlUpdate);
                Console.WriteLine("student1 parameter: " + student1.ToString());
                Console.WriteLine("student2 parameter: " + student2.ToString());
                Console.WriteLine(String.Format("{0} Line(s) updated.", i));

                //update result
                studentDb = (List <Student>)con.Query <Student>(sqlSelect);
                foreach (Student student in studentDb)
                {
                    Console.WriteLine("Student updated result: " + student.ToString());
                }

                //delete
                i = con.Execute(sqlDelete, new { studentid1 = student1.studentid, studentid2 = student2.studentid });

                Console.WriteLine("--------------------------");
                Console.WriteLine("Delete Sql : " + sqlDelete);
                Console.WriteLine(String.Format("{0} Line(s) deleted.", i));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception:");
                Console.WriteLine(ex.Message);
            }

            Console.WriteLine("--------------------------");
            Console.WriteLine("End");
        }
コード例 #10
0
        public static void Command_ExecuteNonQuery_Sample()
        {
            Console.WriteLine(String.Format("{0} Command_ExecuteNonQuery_Sample", databaseProductType.ToString()));

            Console.WriteLine("Start");

            CdbcConnection con      = UtilCommon.getConnection(databaseProductType);
            string         queryStr = @"INSERT INTO CODE_SAMPLE(VAR1, NUM1, DATE1, CLOB1, BLOB1) VALUES (:VAR1, :NUM1, :DATE1, :CLOB1, :BLOB1)";
            CdbcCommand    cmd      = new CdbcCommand(queryStr, con);

            string guid = Guid.NewGuid().ToString();

            CdbcParameter para = new CdbcParameter(":VAR1", CdbcOracleDbType.Varchar2);

            para.Value = guid;
            cmd.Parameters.Add(para);

            para       = new CdbcParameter(":NUM1", CdbcOracleDbType.Decimal);
            para.Value = DateTime.Now.Second;
            cmd.Parameters.Add(para);

            para       = new CdbcParameter(":DATE1", CdbcOracleDbType.Date);
            para.Value = DateTime.Now;
            cmd.Parameters.Add(para);

            para       = new CdbcParameter(":CLOB1", CdbcOracleDbType.Clob);
            para.Value = DateTime.Now.Second;
            cmd.Parameters.Add(para);

            para = new CdbcParameter(":BLOB1", CdbcOracleDbType.Blob);
            //para.Value = System.IO.File.ReadAllBytes(@"your file path");
            cmd.Parameters.Add(para);


            Console.WriteLine("--------------------------");
            Console.WriteLine("Sample 1 : Insert a record into table CODE_SAMPLE");
            Console.WriteLine("Sql : " + queryStr);

            try
            {
                int i = cmd.ExecuteNonQuery();

                Console.WriteLine(String.Format("{0} Line(s) inserted.", i));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception:");
                Console.WriteLine(ex.Message);
            }


            string      queryStrDelete = @"DELETE FROM CODE_SAMPLE WHERE VAR1=:VAR1";
            CdbcCommand cmdDelete      = new CdbcCommand(queryStrDelete, con);

            para       = new CdbcParameter(":VAR1", CdbcOracleDbType.Varchar2);
            para.Value = guid;
            cmdDelete.Parameters.Add(para);


            Console.WriteLine("--------------------------");
            Console.WriteLine("Sample 2 : Delete the record we inserted before.");
            Console.WriteLine("Sql : " + queryStrDelete);

            try
            {
                int i = cmdDelete.ExecuteNonQuery();

                Console.WriteLine(String.Format("{0} Line(s) deleted.", i));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception:");
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine("--------------------------");
            Console.WriteLine("End");
        }
コード例 #11
0
        public static void CommandCollection_ExecuteMultiQuery_Sample()
        {
            Console.WriteLine(String.Format("{0} CommandCollection_ExecuteMultiQuery_Sample", databaseProductType.ToString()));
            Console.WriteLine("Start");

            Console.WriteLine("--------------------------");
            Console.WriteLine("CommandCollection.ExecuteMultiQuery is original Method of CdbcCommandCollection.");
            Console.WriteLine("It can execute multi command in same transaction.");
            Console.WriteLine("It is designed to improve performance and Data Concurrency and Consistency");
            Console.WriteLine("--------------------------");
            Console.WriteLine("This sample will insert 3 records and than update one of the record.");
            Console.WriteLine("--------------------------");

            CdbcConnection con       = UtilCommon.getConnection(databaseProductType);
            string         queryStr1 = @"INSERT INTO CODE_SAMPLE(VAR1 , DATE1 ) VALUES (:VAR1, SYSDATE)";
            CdbcCommand    cmd1      = new CdbcCommand(queryStr1, con);

            string[] arrParas = new string[3];

            for (int i = 0; i < arrParas.Length; i++)
            {
                arrParas[i] = Guid.NewGuid().ToString();
            }

            cmd1.ArrayBindCount = 3;
            CdbcParameter prm =
                new CdbcParameter("VAR1", CdbcOracleDbType.Varchar2);

            prm.Value = arrParas;
            cmd1.Parameters.Add(prm);

            string      queryStr2 = @"UPDATE CODE_SAMPLE SET DATE1 = DATE1+1 WHERE VAR1=:VAR1";
            CdbcCommand cmd2      = new CdbcCommand(queryStr2, con);

            prm       = new CdbcParameter("VAR1", CdbcOracleDbType.Varchar2);
            prm.Value = arrParas[0];
            cmd2.Parameters.Add(prm);


            Console.WriteLine("--------------------------");
            Console.WriteLine("SQL 1 :" + queryStr1);
            Console.WriteLine("Para 1 :");

            for (int i = 0; i < arrParas.Length; i++)
            {
                Console.WriteLine(arrParas[i]);
            }
            Console.WriteLine("");
            Console.WriteLine("SQL 2 :" + queryStr2);

            Console.WriteLine("--------------------------");
            try
            {
                CdbcCommandCollection cmdCollection = new CdbcCommandCollection();
                cmdCollection.Add(cmd1);
                cmdCollection.Add(cmd2);
                cmdCollection.ExecuteMultiQuery();

                for (int iCmd = 0; iCmd < cmdCollection.Count; iCmd++)
                {
                    Console.WriteLine(String.Format("Command {0} Result : {1} ", iCmd, cmdCollection.ExecuteNonQueryResult[iCmd].ToString()));
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception:");
                Console.WriteLine(ex.Message);
            }

            //Confirm Data
            Console.WriteLine("---Confirm Data-----------------------");
            string      queryStrSelect = @"SELECT VAR1, DATE1 FROM CODE_SAMPLE WHERE VAR1 IN (:VAR1_0 ,:VAR1_1,:VAR1_2) ";
            CdbcCommand cmdSelect      = new CdbcCommand(queryStrSelect, con);

            for (int i = 0; i < arrParas.Length; i++)
            {
                prm       = new CdbcParameter("VAR1_" + i.ToString(), CdbcOracleDbType.Varchar2);
                prm.Value = arrParas[i];
                cmdSelect.Parameters.Add(prm);
            }

            try
            {
                DbDataReader reader = cmdSelect.ExecuteReader();
                while (reader.Read())
                {
                    for (int i = 0; i < reader.FieldCount; i++)
                    {
                        Console.WriteLine(String.Format("{0} = {1}", reader.GetName(i), reader.GetValue(i).ToString()));
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception:");
                Console.WriteLine(ex.Message);
            }

            //Clear Data
            Console.WriteLine("---Clear Data-----------------------");

            string      queryStrDelete = @"DELETE FROM CODE_SAMPLE WHERE VAR1=:VAR1";
            CdbcCommand cmdDelete      = new CdbcCommand(queryStrDelete, con);

            cmdDelete.ArrayBindCount = 3;
            prm =
                new CdbcParameter("VAR1", CdbcOracleDbType.Varchar2);
            prm.Value = arrParas;
            cmdDelete.Parameters.Add(prm);
            try
            {
                int i = cmdDelete.ExecuteNonQuery();

                Console.WriteLine(String.Format("{0} Line(s) Deleted.", i));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception:");
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine("--------------------------");
            Console.WriteLine("End");
        }
コード例 #12
0
ファイル: FrmProduct.cs プロジェクト: ricct/cdbcsystemsample
        private bool SaveData()
        {
            CdbcConnection con = UtilCommon.getConnection();
            string         cmdQuery;

            if (isNew)
            {
                cmdQuery = @"INSERT INTO PRODUCTS("
                           + "    PRODUCT_NAME"
                           + "  , PRODUCT_PRICE"
                           + "  , CURRENCY_CODE"
                           + "  , PRODUCT_SUMMARY"
                           + "  , CATEGORY_CODE"
                           + "  , PRODUCT_IMAGE"
                           + "  , RELEASE_DATE"
                           + "  , PRODUCT_CODE"
                           + " ) "
                           + "VALUES ("
                           + "    :PRODUCT_NAME"
                           + "  , :PRODUCT_PRICE"
                           + "  , :CURRENCY_CODE"
                           + "  , :PRODUCT_SUMMARY"
                           + "  , :CATEGORY_CODE"
                           + "  , :PRODUCT_IMAGE"
                           + "  , :RELEASE_DATE"
                           + "  , :PRODUCT_CODE"
                           + ")";
            }
            else
            {
                cmdQuery = @"UPDATE PRODUCTS "
                           + " SET PRODUCT_NAME    = :PRODUCT_NAME"
                           + "  ,  PRODUCT_PRICE   = :PRODUCT_PRICE"
                           + "  ,  CURRENCY_CODE   = :CURRENCY_CODE"
                           + "  ,  PRODUCT_SUMMARY = :PRODUCT_SUMMARY"
                           + "  ,  CATEGORY_CODE   = :CATEGORY_CODE"
                           + "  ,  PRODUCT_IMAGE   = :PRODUCT_IMAGE"
                           + "  ,  RELEASE_DATE    = :RELEASE_DATE"
                           + " WHERE PRODUCT_CODE  = :PRODUCT_CODE";
            }

            // Create the OracleCommand
            CdbcCommand cmd = new CdbcCommand(cmdQuery, con);

            CdbcParameter para = new CdbcParameter(":PRODUCT_NAME", Cdbc.Common.Data.Type.CdbcOracleDbType.Varchar2);

            para.Value = txtProductName.Text;
            cmd.Parameters.Add(para);

            para = new CdbcParameter(":PRODUCT_PRICE", Cdbc.Common.Data.Type.CdbcOracleDbType.Decimal);
            int iPrice;

            if (Int32.TryParse(txtPrice.Text, out iPrice))
            {
                para.Value = iPrice;
            }
            else
            {
                MessageBox.Show("Invalid price.",
                                "Error",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error)
                ;
                return(false);
            }
            cmd.Parameters.Add(para);

            para       = new CdbcParameter(":CURRENCY_CODE", Cdbc.Common.Data.Type.CdbcOracleDbType.Varchar2);
            para.Value = cbCurrency.SelectedValue;
            cmd.Parameters.Add(para);

            para       = new CdbcParameter(":PRODUCT_SUMMARY", Cdbc.Common.Data.Type.CdbcOracleDbType.Varchar2);
            para.Value = txtSummary.Text;
            cmd.Parameters.Add(para);


            para       = new CdbcParameter(":CATEGORY_CODE", Cdbc.Common.Data.Type.CdbcOracleDbType.Varchar2);
            para.Value = cbCategory.SelectedValue;
            cmd.Parameters.Add(para);


            para       = new CdbcParameter(":PRODUCT_IMAGE", Cdbc.Common.Data.Type.CdbcOracleDbType.Blob);
            para.Value = UtilCommon.ImageToByteArray(pictureBox1.Image);
            cmd.Parameters.Add(para);

            para       = new CdbcParameter(":RELEASE_DATE", Cdbc.Common.Data.Type.CdbcOracleDbType.Date);
            para.Value = new DateTime(dtReleaseDate.Value.Year, dtReleaseDate.Value.Month, dtReleaseDate.Value.Day);
            cmd.Parameters.Add(para);

            para       = new CdbcParameter(":PRODUCT_CODE", Cdbc.Common.Data.Type.CdbcOracleDbType.Varchar2);
            para.Value = ProductCode;
            cmd.Parameters.Add(para);

            //if (!isNew)
            //{
            //    para = new CdbcParameter(":ISBN2", Cdbc.Common.Data.Type.CdbcOracleDbType.Varchar2);
            //    para.Value = txtISBN.Text;
            //    cmd.Parameters.Add(para);
            //}


            try
            {
                cmd.ExecuteNonQuery();
                return(true);
            }
            catch (Exception Ex)
            {
                MessageBox.Show(Ex.Message,
                                "Error",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error)
                ;
                return(false);
            }
        }