.Net c# + Oracle วิธ๊ใช้ connection string

เกี่ยวกับ ปัญหาการใช้งาน การติดตั้ง ฐานข้อมูล MySql Oracle MSSQL ect...
การเขียน คำสั่ง SQL เพื่อดึกข้อมูล บอร์ดนี้ควรระบุโครงสร้างตารางของท่านในคำถามด้วยนะ

Moderator: mindphp

ภาพประจำตัวสมาชิก
jataz2
PHP Super Member
PHP Super Member
โพสต์: 231
ลงทะเบียนเมื่อ: 22/02/2011 11:48 am

.Net c# + Oracle วิธ๊ใช้ connection string

โพสต์โดย jataz2 » 04/07/2019 11:30 am

แบบที่ 1 ทั่วๆไป

โค้ด: เลือกทั้งหมด

<add name="T_CONN" connectionString="DATA SOURCE=10.0.0.1:1243/CUSTOMERDB;PASSWORD=password;PERSIST SECURITY INFO=True;USER ID=CUST;Enlist=True;" />


แบบที่ 2 เพิ่ม option เข้าไป 3 ตัว Validate Connection ,Connection Lifetime และ Connection Timeout

โค้ด: เลือกทั้งหมด

<add name="T_CONN" connectionString="DATA SOURCE=10.0.0.1:1243/CUSTOMERDB;PASSWORD=password;PERSIST SECURITY INFO=True;USER ID=CUST;Enlist=True; Validate Connection=true;Connection Lifetime=1800;Connection Timeout=300;" />


ผมแนะนำให้ใช้แบบที่ 2 ครับ เพิ่มเวลา timeout จาก default 15 วินาที เป็น 300 วินาที มีการ validate connection ก่อน และระบุเวลา lifetime เป็น 1800 วินาที คิวรี หรือ command update insert หรือ call storeproc ทั่วไปไม่น่าจะนานเกิน 300 วิ ครับ ป้องกันปัญหาก่อนที่มันจะเกิด

อ่านเพิ่มเติมได้ที่นี่ครับ

https://www.codeproject.com/Articles/17 ... t-a-Glance

https://www.connectionstrings.com/oracl ... t-odp-net/

ภาพประจำตัวสมาชิก
Sirayu
PHP Jr. Member
PHP Jr. Member
โพสต์: 27
ลงทะเบียนเมื่อ: 12/06/2019 11:30 am
ติดต่อ:

Re: .Net c# + Oracle วิธ๊ใช้ connection string

โพสต์โดย Sirayu » 04/07/2019 12:54 pm

ขอบคุณเนื้อหาดีๆ มากครับ
โปรแกรมตัดต่อวีดีโอ :https://ตัดต่อวีดีโอ.com/

ภาพประจำตัวสมาชิก
jataz2
PHP Super Member
PHP Super Member
โพสต์: 231
ลงทะเบียนเมื่อ: 22/02/2011 11:48 am

Re: .Net c# + Oracle วิธ๊ใช้ connection string

โพสต์โดย jataz2 » 05/07/2019 9:45 am

แบบที่1 ถ้าเราไม่ระบุ IsolationLevel ค่า default ของมันคือ Serializable

โค้ด: เลือกทั้งหมด

    using (TransactionScope txn = new TransactionScope())
            {
                for (int i=0;i< 1000; i++)
                {
                      string cmd = "insert into tba(id,count) values(1,7)";

                      ExecuteNoneQuery(cmd );
                }     
               txn.Complete();
            }


แบบที่ 2 ใส่ transaction option เพิ่มเข้าไป แบบนี้จะดูดีกว่า ลดวามเสี่ยง deadlock และ timeout

โค้ด: เลือกทั้งหมด

            var txOptions = new System.Transactions.TransactionOptions();
            txOptions.IsolationLevel = IsolationLevel.ReadCommitted;
            using (TransactionScope txn = new TransactionScope(TransactionScopeOption.Required, txOptions))
            {
                for (int i=0;i< 1000; i++)
                {
                      string cmd = "insert into tba(id,count) values(1,7)";

                      ExecuteNoneQuery(cmd );
                }     
               txn.Complete();
            }
แนบไฟล์
Isolation Level.jpg
Isolation Level.jpg (201.91 KiB) เปิดดู 256 ครั้ง


ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 6 และ บุคคลทั่วไป 0 ท่าน