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 > ต้องการสร้าง function สำหรับ connect DB ใน Class ทำยังงัยคะ



 

ต้องการสร้าง function สำหรับ connect DB ใน Class ทำยังงัยคะ

 



Topic : 038846



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



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




ต้องการสร้าง function สำหรับ connect DB ใน Class ทำยังงัยคะ
สร้างแล้ว เวลาฟอร์มลูกเรียกใช้ มันไม่รู้จัก Class ตัวที่สร้างค่ะ
เป็น webapp vb.net

ลองหลายแบบแล้วก็ทำไม่ได้สักทีค่ะ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-02-12 16:11:58 By : njnight View : 3809 Reply : 5
 

 

No. 1



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



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


Code (C#)
// New class ขึ้นมาชื่ออะไรก็ได้ ในตัวอย่าง เป็น AppDataLayer.cs ค่ะ

using System.Data.SqlClient ;
using System.Configuration ;

namespace AppDataLayer
{
    public class AppConnectorHelper
    {

        // เป็นตัวแปรเก็บ connectionString จะอ่านจาก Txt file หรือ Web.Config 
        // ยังไงก็ได้ ขอให้ถูก Syntax ก็พอ Code นี้ใช้ได้ทั้ง Web app และ Win App ค่ะ
        public static string ConnectionString = string.Empty;
        public static int DefaultCommandTimeOut = 500 ;

        // flag กำหนดให้ throw error หรือ แค่ return ค่า false ถ้า เกิด error ค่ะ
        public static bool RaiseErrorForDebugChecked = false ;

        
        //nTimeOut เป็นเวลา timeout ของการ Execute กำหนดในกรณีที่ต้องใช้เวลานาน 
        public static bool ExecuteSQLCommand ( string strSQLCommand ,int nTimeOut    
             ,SqlParameterCollection Params )
        {
              SqlConnection aConn = new SqlConnection (ConnectionString ) ;
              SqlCommand aCommand = new SqlCommand (aConn ,strCommand) ;
              aCommand.CommandTimeOut = nTimeOut ;
              bool result = false ;
              
              if ((Params != null)&&(Params.Count >0) )
              {
                   foreach ( SqlParamater iParam in Params)
                       aCommand.Parameters.Add(iParam) ;
              }

              try
              {
                   aConn.Open() ; // เปิดการเชื่อมต่อ
                   aCommand.ExecuteNonQuery() ; // Execute command
                   result = true ;
              }
              catch ( Exception ex) 
              {
                   result = false ;
                   if ( AppConnectorHelper.RaiseErrorForDebugChecked  )
                        throw new Exception ( ex.message ) ;                
              } 
              finally
              {
                   if(aConn != null) aConn.Close() ;
              }
    
              return result ;        
        }

        // Overload เพื่อให้เขียนง่ายและสั้นค่ะ
         public static bool ExecuteSQLCommand ( string strSQLCommand       ,SqlParameterCollection Params )
         {
              return ExecuteSQLCommand ( strSQLCommand ,AppConnectorHelper.DefaultCommandTimeOut  ,Params ) ;      
         }
         public static bool ExecuteSQLCommand ( string strSQLCommand )
         {
              return ExecuteSQLCommand ( strSQLCommand ,AppConnectorHelper.DefaultCommandTimeOut  ,null) ;      
         }
         

        
        public static DataTable GetDataTableFromSQLCommand ( string strSQLCommand ,int nTimeOut  ,SqlParameterCollection Params )
        {
              SqlConnection aConn = new SqlConnection (ConnectionString ) ;
              SqlDataAdaptor aDataAdaptor = new SqlDataAdaptor () ;
              SqlCommand aCommand = new SqlCommand (aConn ,strCommand) ;
              aCommand.CommandTimeOut = nTimeOut ;
              DataTable resultTable = null ;
              
              if ((Params != null)&&(Params.Count >0) )
              {
                   foreach ( SqlParamater iParam in Params)
                       aCommand.Parameters.Add(iParam) ;
              }

              aDataAdaptor.SelectCommand = aCommand ; 

              try
              {
                   resultTable  = new DataTable();
                   aConn.Open() ; // เปิดการเชื่อมต่อ
                   aDataAdaptor.Fill( resultTable  ) ;                   
              }
              catch ( Exception ex) 
              {  
                   resultTable  = null ;

                   if ( AppConnectorHelper.RaiseErrorForDebugChecked  )
                        throw new Exception ( ex.message ) ;                
              } 
              finally
              {
                   if(aConn != null) aConn.Close() ;
              }
    
              return resultTable  ;        
        }   

        // Overload 
        public static DataTable GetDataTableFromSQLCommand ( string strSQLCommand  ,SqlParameterCollection Params )
        {
             return GetDataTableFromSQLCommand ( strSQLCommand   ,AppConnectorHelper.DefaultCommandTimeOut ,Params );
        }
        public static DataTable GetDataTableFromSQLCommand ( string strSQLCommand )
        {
             return GetDataTableFromSQLCommand ( strSQLCommand   ,AppConnectorHelper.DefaultCommandTimeOut ,null);
        }

         // ส่วน method Get DataSet ,ExecuteScalar หรือ ExecuteReader ลองไปเขียนนะคะ


    }

}


......
......

// ใน Code behide หรือ Code Page

using System.Data.SqlClient ;
using AppDataLayer ; // << แจ้งขอใช้ Namespace ที่เราเขียน


void Page_Load()
{

    if (!isPostBack)
    {
        // กำหนด connection string ของเรา
        AppConnectorHelper.ConnectionString = ..... ; // จะย้ายไปอยู่ที่ Global.asax จะดีกว่าเพราะทำแคครั้งเดียวค่ะ


        // ตัวอย่างการใช้

        // สมมุติมี Grid ชื่อ GrdProduct นะคะ
        string strGetAllProductCommand = "SELECT * FROM PRODUCT" ;

        GrdProduct.DataSource = AppDataHelper.GetDataTable( strGetAllProductCommand  ) ;


        //หรือ
        
        SqlParameterCollection CommandParam = new SqlParameterCollection () ;

        // วันที่ 1 ของเดือนนี้
        DateTime MonthStart = new DateTime( DateTime.now.year ,DateTime.now.month ,1);
        
        // วันสุดท้ายของเดือนนี้ ซึ่งอาจจะเป็น 30 ,31 หรือ 28 
        // บวกเพิ่มไปหนึ่งเดือน จะเป็นที่ 1 ของเดือนถัดไป จากนั้น ลบ 1 วัน จะได้วันสุดท้ายของเดือนนี้
        DateTime MonthEnd = MonthStart.AddMonths(1).AddDays(-1);
        

        CommandParam.AddWithValue("@VAR_BEGIN_DATE" ,MonthStart  ) ;
        CommandParam.AddWithValue("@VAR_END_DATE" ,MonthEnd  ) ; 

        string strGetSomeProductCommand = "SELECT * FROM [PRODUCT] " 
             + " WHERE [ORDER_DATE] BETWEEN @VAR_BEGIN_DATE AND @VAR_END_DATE " ;
        GrdProduct.DataSource = AppDataHelper.GetDataTable(strGetSomeProductCommand ,CommandParam) ;


        // ตัวอย่าง การ Execute

         string InsertCommand = "INSERT INTO [PRODUCT] VALUES (@VAR_DESCRIPTION ,@VAR_ORDER_DATE)" ;
        string NewNameStr = "ABC's for kids" ;

        SqlParameterCollection CommandParam = new SqlParameterCollection () ;

        CommandParam.AddWithValue("@VAR_DESCRIPTION" ,NewNameStr) ; 
        CommandParam.AddWithValue("@VAR_ORDER_DATE" ,DateTime.now) ; 

        AppDataHelper.ExecuteSQLCommand ( InsertCommand ,CommandParam);


        // หรือ

        string DeleteCommand = "DELETE FROM [PRODUCT] "
            + " WHERE ([Order_date] <= @VAR_DELTED_DATE)" ;
        SqlParameterCollection CommandParam = new SqlParameterCollection () ;

        CommandParam.AddWithValue("@VAR_DELTED_DATE" ,DateTime.now) ; 

        AppDataHelper.ExecuteSQLCommand ( DeleteCommand ,CommandParam);


        // ถ้าใช้ SQL Parameter จะช่วยลดความซับซ้อนตอน declare SQL Command ได้มาก
        // ลดโอกาสผิดพลาดจากอักขระพิเศษ ' " ได้ทั้งหมด และป้องกันการใช้ SQL Injection ด้วยค่ะ


    }  
}












Date : 2010-02-12 18:28:13 By : blurEye
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

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

Code (VB.NET)
Imports System.Data
Imports System.Data.OleDb
Imports System.Configuration
Public Class clsDatabase
    Private objConn As OleDbConnection
    Private objCmd As OleDbCommand
    Private Trans As OleDbTransaction
    Private strConnString As String

    Public Sub New()
        strConnString = System.Configuration.ConfigurationSettings.AppSettings("ConnectionString")
    End Sub

    Public Function QueryDataReader(ByVal strSQL As String) As OleDbDataReader
        Dim dtReader As OleDbDataReader
        objConn = New OleDbConnection
        With objConn
            .ConnectionString = strConnString
            .Open()
        End With
        objCmd = New OleDbCommand(strSQL, objConn)
        dtReader = objCmd.ExecuteReader()
        Return dtReader '*** Return DataReader ***'
    End Function

    Public Function QueryDataSet(ByVal strSQL As String) As DataSet
        Dim ds As New DataSet
        Dim dtAdapter As New OleDbDataAdapter
        objConn = New OleDbConnection
        With objConn
            .ConnectionString = strConnString
            .Open()
        End With
        objCmd = New OleDbCommand
        With objCmd
            .Connection = objConn
            .CommandText = strSQL
            .CommandType = CommandType.Text
        End With
        dtAdapter.SelectCommand = objCmd
        dtAdapter.Fill(ds)
        Return ds   '*** Return DataSet ***'
    End Function

    Public Function QueryDataTable(ByVal strSQL As String) As DataTable
        Dim dtAdapter As OleDbDataAdapter
        Dim dt As New DataTable
        objConn = New OleDbConnection
        With objConn
            .ConnectionString = strConnString
            .Open()
        End With
        dtAdapter = New OleDbDataAdapter(strSQL, objConn)
        dtAdapter.Fill(dt)
        Return dt '*** Return DataTable ***'
    End Function

    Public Function QueryExecuteNonQuery(ByVal strSQL As String) As Boolean
        objConn = New OleDbConnection
        With objConn
            .ConnectionString = strConnString
            .Open()
        End With
        Try
            objCmd = New OleDbCommand
            With objCmd
                .Connection = objConn
                .CommandType = CommandType.Text
                .CommandText = strSQL
            End With
            objCmd.ExecuteNonQuery()
            Return True '*** Return True ***'
        Catch ex As Exception
            Return False '*** Return False ***'
        End Try
    End Function

    Public Function QueryExecuteScalar(ByVal strSQL As String) As Object
        Dim obj As Object
        objConn = New OleDbConnection
        With objConn
            .ConnectionString = strConnString
            .Open()
        End With
        Try
            objCmd = New OleDbCommand
            With objCmd
                .Connection = objConn
                .CommandType = CommandType.Text
                .CommandText = strSQL
            End With
            obj = objCmd.ExecuteScalar()  '*** Return Scalar ***'
            Return obj
        Catch ex As Exception
            Return Nothing '*** Return Nothing ***'
        End Try
    End Function

    Public Function TransStart()
        objConn = New OleDbConnection
        With objConn
            .ConnectionString = strConnString
            .Open()
        End With
        Trans = objConn.BeginTransaction(IsolationLevel.ReadCommitted)
    End Function

    Public Function TransExecute(ByVal strSQL As String) As Boolean
        objCmd = New OleDbCommand
        With objCmd
            .Connection = objConn
            .Transaction = Trans
            .CommandType = CommandType.Text
            .CommandText = strSQL
        End With
        objCmd.ExecuteNonQuery()
    End Function

    Public Function TransRollBack()
        Trans.Rollback()
    End Function

    Public Function TransCommit()
        Trans.Commit()
    End Function

    Public Sub Close()
        objConn.Close()
        objConn = Nothing
    End Sub

End Class


ASP.NET Microsoft Access Database Class
Date : 2010-02-12 18:47:56 By : webmaster
 

 

No. 3



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



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


อ้าว เก๋ มีคนมาตอบให้แล้วนี่นา อิอิ
Date : 2010-02-14 14:21:11 By : somooo
 


 

No. 4



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



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


ขอบคุณค่ะ จะลองทำดูนะคะ
Date : 2010-02-15 09:47:51 By : njnight
 


 

No. 5



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



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


ขอบคุณมากๆ นะคะ ทำได้แล้ว
ปวดหัวอยู่ตั้งนาน
Date : 2010-02-15 11:03:22 By : njnight
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ต้องการสร้าง function สำหรับ connect DB ใน Class ทำยังงัยคะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 00
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 อัตราราคา คลิกที่นี่