Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > This SqlTransaction has completed; it is no longer usable. โค้ดนี้ใช้งานได้ครับ แต่จะError ในกรณีที่มีการเรียกใช้ Method ซ้ำด้วยObject



 

This SqlTransaction has completed; it is no longer usable. โค้ดนี้ใช้งานได้ครับ แต่จะError ในกรณีที่มีการเรียกใช้ Method ซ้ำด้วยObject

 



Topic : 026468



โพสกระทู้ ( 151 )
บทความ ( 0 )



สถานะออฟไลน์




public class DBClass
{
    private string STR_CONNECTION = "Server=HOADNA-PC\\SQLEXPRESS;Uid=sa;PASSWORD=123;database=aa;Max Pool Size=400;Connect Timeout=600;";
    private SqlConnection DBConnection;
    private SqlCommand DBCommand;
    private SqlDataAdapter DBAdapter;
    private SqlTransaction Trans = default(SqlTransaction); 

    public DBClass()
    {
        DBConnection = new SqlConnection(STR_CONNECTION);
        DBConnection.Open();
        Trans = DBConnection.BeginTransaction(IsolationLevel.ReadCommitted);
        
        DBCommand = new SqlCommand();
        DBCommand.Connection = DBConnection;
        DBCommand.Transaction = Trans; 
        DBAdapter = new SqlDataAdapter();
        
    }

    public DataSet Query(string strSQL)
    {
        DataSet DS = new DataSet();
        try
        {
            DBCommand.CommandText = strSQL;
            DBAdapter.SelectCommand = DBCommand;
            DBAdapter.Fill(DS);
            Trans.Commit();   //***************************  จุด Error *************************
        }
        catch (Exception Ex)
        {
            Trans.Rollback();
        }
        finally
        {
            DBConnection.Close();
        }
        return DS;
    }
}


โค้ดนี้ใช้งานได้ครับ แต่จะError ในกรณีที่มีการเรียกใช้ Method ซ้ำด้วยObject ตัวเดิม
มันจะฟ้องว่า This SqlTransaction has completed; it is no longer usable.
ขั้นตอนใน finally ผมควรเขียนอะไรเพิ่มครับ เพื่อที่จะSet ค่า Trans ให้มันใช้งานได้ใหม่



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-04-20 15:28:36 By : nutkit View : 6260 Reply : 3
 

 

No. 1



โพสกระทู้ ( 151 )
บทความ ( 0 )



สถานะออฟไลน์


ตอนนี้แก้เป็นแบบนี้ครับ มีวิธีไหนดีกว่านี้ไหม

public class DBClass
{
private string STR_CONNECTION = "Server=HOADNa-PC\\SQLEXPRESS;Uid=sa;PASSWORD=123;database=a;Max Pool Size=400;Connect Timeout=600;";
private SqlConnection DBConnection;
private SqlCommand DBCommand;
private SqlDataAdapter DBAdapter;
private SqlTransaction Trans = default(SqlTransaction);

public DBClass()
{

}

public void DBOpen()
{
DBConnection = new SqlConnection(STR_CONNECTION);
DBConnection.Open();
Trans = DBConnection.BeginTransaction(IsolationLevel.ReadCommitted);

DBCommand = new SqlCommand();
DBCommand.Connection = DBConnection;
DBCommand.Transaction = Trans;

DBAdapter = new SqlDataAdapter();
}

public DataSet Query(string strSQL)
{
DBOpen();
DataSet DS = new DataSet();
try
{
DBCommand.CommandText = strSQL;
DBAdapter.SelectCommand = DBCommand;
DBAdapter.Fill(DS);
Trans.Commit();
}
catch (Exception Ex)
{
Trans.Rollback();
}
finally
{
DBConnection.Close();
}
return DS;
}
}






Date : 2009-04-20 15:59:45 By : nutkit
 


 

No. 2

Guest


ปัญหานี้เกิดมากจากคำสั่ง SQL ที่ส่งเข้ามานั้นมีการคำนวณหรือมีพวกตัวแปรที่มีการคืนค่าเข้ามาในคำสั่งน่ะครับ ถ้าจะไม่ให้เกิด errror นี้นะครับ ให้คุณเปลี่ยนคำสั่ง SQL ให้เป็น String ในรูปแบบปกติก่อนที่จะส่งเป็น parameter ก่อนนะครับ
Date : 2009-04-20 21:18:25 By : Programmer ด้อยปัญญา
 

 

No. 3



โพสกระทู้ ( 151 )
บทความ ( 0 )



สถานะออฟไลน์


ผมเข้าใจว่าโค้ดตัวแรกของผมน่ะ ในตอนเรียกใช้ครั้งที่สอง ผมเรียกผ่านobjectตัวเดิม ไม่ได้Newใหม่

มันจึงทำให้Connection ซึ่งClose ไปแล้ว ไม่สามารถทำงานได้อีกอ่ะครับ

โค้ดตอนแรกสุดเลยทำแบบนี้ มีการต่อเบสทุกครั้งในแต่ละเม็ดทอด

public DBClass()
{
DBConnection = new SqlConnection(STR_CONNECTION);
DBCommand = new SqlCommand();
DBCommand.Connection = DBConnection;

DBAdapter = new SqlDataAdapter();

}


public DataSet Query(string strSQL)
{
DBConnection.Open();
DataSet DS = new DataSet();
try
{
DBCommand.CommandText = strSQL;
DBAdapter.SelectCommand = DBCommand;
DBAdapter.Fill(DS);
}
catch (Exception Ex)
{

}
finally
{
DBConnection.Close();
}
return DS;
}
}

แต่พอผมจะเพิ่มพวก Transaction ผมเลยแก้โค้ดเป็นแบบในกระทู้คำถาม นำมาซึ่งError
Date : 2009-04-20 21:25:29 By : nutkit
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : This SqlTransaction has completed; it is no longer usable. โค้ดนี้ใช้งานได้ครับ แต่จะError ในกรณีที่มีการเรียกใช้ Method ซ้ำด้วยObject
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่