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

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

Moderator: mindphp

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

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

โพสต์ที่ยังไม่ได้อ่าน โดย jataz2 »

แบบที่ 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 Sr. Member
PHP Sr. Member
โพสต์: 94
ลงทะเบียนเมื่อ: 12/06/2019 11:30 am
ติดต่อ:

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

โพสต์ที่ยังไม่ได้อ่าน โดย Sirayu »

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

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

โพสต์ที่ยังไม่ได้อ่าน โดย jataz2 »

แบบที่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) Viewed 1681 times
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

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

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 77