พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
ASP, ASP.NET Articles / การติดต่อกับ Oracle
Administrator
Mon 31 Oct 2005 11:52:37
หลังจากไม่ได้มีการอัพเดท Article มานาน ขอทำการอัพเดทบทความหน่อยนะครับ
วันนี้เรามาดูการทำงานของ ASP.Net กับ Oracle กันครับ

การติดต่อ Oracle ด้วย ASP.NET นั้นสามาถทำได้ 4 วิธีครับ
  1. การติดต่อผ่าน OLEDB ซึ่งเป็น Connection ที่มีมาพร้อมกับ Framework ทั้ง 1.0 และ 1.1 ครับ
    การใช้งานก็
    • Assembly : System.Data.dll
    • Namespace : System.Data.Oledb
    ตัวอย่างการใช้งาน
    using System.Data.Oledb;
    ......
    OledbConnection conn = new OledbConnection();
    conn.ConnectionString = "Provider=\"OraOLEDB.Oracle.1\"; User ID=scott; Password=tiger; Data Source=orcl;";
    conn.Open();

  2. การติดต่อผ่าน ODBC ซึ่งสามารถดาวน์โหลดได้ ที่นี่
    • Assembly : Microsoft.Data.Odbc.dll
    • Namespace : System.Data.Odbc
    ตัวอย่างการใช้งาน
    using System.Data.Odbc;
    .......
    OdbcConnection conn = new OdbcConnection();
    conn.ConnectionString = "DSN=odbc_name; UID=scott; PWD=tiger; Driver={Microsoft ODBC for Oracle}; SERVER=10.235.125.18";
    conn.Open();

  3. การติดต่อผ่าน OracleClient เป็น connection ของ Microsoft เพื่อติดต่อ Oracle โดยเฉพาะสามารถดาวน์โหลดได้ ที่นี่
    • Assembly : System.Data.OracleClient.dll
    • Namespace : System.Data.OracleClient
    ตัวอย่างการใช้งาน
    using
    System.Data.OracleClient;
    .......
    OracleConnection conn = new OracleConnection();
    conn.ConnectionString = "USER ID=scott; PASSWORD=tiger; DATA SOURCE=orcl;";
    conn.Open();

  4. การติดต่อผ่าน ODP.Net ซึ่งเป็น Data Provider สำหรับ .Net Framework เพื่อติดต่อกับ Oracle ที่พัฒนาโดยทีมงานของ Oracle เอง สามารถดาวน์โหลดได้ ที่นี่
    • Assembly : Oracle.DataAccess.dll
    • Namespace : Oracle.DataAccess.Client
    ตัวอย่างการใช้งาน
    using Oracle.DataAccess.Client;
    ........
    OracleConnection conn = new OracleConnection();
    conn.ConnectionString = "USER ID=scott; PASSWORD=tiger; DATA SOURCE=orcl;";
    conn.Open();
จากการติดต่อระหว่าง ASP.Net กับ Oracle ทั้ง 4 แบบนั้น สามารถทำงานได้เหมือนกันหมดครับ แต่ต่างกันที่ Performance ที่เกิดขึ้นครับ จากการทดสอบการติดต่อผ่าน ODP จะรวดเร็วที่สุด และรองลงมาจะเป็น Microsoft Data Provider for Oracle (OracleClient) และถัดลงมาก็จะเป็น การติดต่อผ่าน OLEDB และที่ช้าที่สุดก็คือการติดต่อผ่าน ODBC ครับ
Ton
Ton
Wed 5 Apr 2006 09:11:14

มันแสดงออกมาเป็นตัวอ่านไม่ออกน่ะครับ จะต้องทำไง

Administrator
Wed 5 Apr 2006 11:07:58
ลองตรวจสอบ Encoding ของส่วนรับข้อมูล ส่วนแสดงผล รวมถึงในฐานข้อมูลว่าตรงกันหรือไม่ครับ
อดัม
อดัม
Tue 12 Sep 2006 12:13:29

OdbcConnection conn = new OdbcConnection();
conn.ConnectionString = "DSN=odbc_name; UID=scott; PWD=tiger; Driver={Microsoft ODBC for Oracle}; SERVER=10.235.125.18";
conn.Open();

Q> DSN มันคืออรัยครับ

Administrator
Tue 12 Sep 2006 12:23:30
DSN = Data Source Name ครับคือ System Data Source ตามที่สร้างไว้ใน ODBC ครับ
kong
kong
Mon 9 Oct 2006 23:09:18

เขียน asp.net แล้วติดตั้งเป็น web server link กับ oracle แล้วอ่านภาษาไทยไม่ได้ไม่ทราบว่าเป็นเพราะอะไรนะครับ และต้อง set ยังงั้ยให้อ่านไทยได้ครับ

kong
kong
Mon 9 Oct 2006 23:11:25

ต่ออีกนะครับว่าผมติดตั้งบน windows 2003 แต่ถ้าลองติดตั้งบน windows 2000 อ่านภาษาไทยได้นะครับ

Kong
Kong
Wed 11 Oct 2006 21:29:15

ผมทราบวิธีการติดตั้งแล้วครับ  ต้องเข้าไป check ที่ web.config ของไฟล์ web นั้น นะครับ ให้เป็นแก้ในไฟล์นี้ก็จะได้เองครับลองดูนะครับ

<globalization requestEncoding="tis-620" responseEncoding="tis-620" culture="th-TH" uiCulture="th-TH"/>

Administrator
Thu 12 Oct 2006 10:00:43
ขอโทษทีครับมองไม่เห็นกระทู้นี้ ใน ASP.NET นั้นสามารถตั้งค่าได้ใน web.config ครับ

และต้องตรวจสอบ oracle client กับ oracle server เป็นไปได้ก็ตั้ง collation ให้ตรงกันครับ
panfa
panfa
Sat 4 Nov 2006 14:06:35
การติดต่อผ่าน ODP.Net   Oracle ต้องเป็น เวอร์ชั่น 9i - 10 เท่านั้นใช้มั้ยค่ะ
Administrator
Wed 8 Nov 2006 00:21:02
ไม่จำเป็นครับ ใช้กับ version ต่ำกว่าก็ได้ครับเป็น backward compatible
panfa
panfa
Wed 8 Nov 2006 18:18:06

ขอบคุณค่ะสำหรับคำตอบด้านบน มีอีกคำถามที่อยากถามค่ะว่า ถ้าทำเป็น vb.net แล้วเวลาไป set up ที่เครื่อง client  โดยใช้เป็น System.Data.OracleClient  ที่เครื่อง client ต้องลง ตัว Oracle Client ด้วยใช้มั้ยค่ะ แล้ว ถ้าใช้เป็น ODP ต้องไปลง Oracle Client ที่เครื่อง Client ด้วยรึเปล่าค่ะ

Administrator
Tue 14 Nov 2006 08:52:51
ODP.Net ต้องลงที่เครื่องที่มีการเรียกใช้ assembly ด้วยครับ
jokkapade
jokkapade
Tue 13 Feb 2007 12:06:33

ผมต้องการติดต่อ oracle กับ C# อะครับ

มี code ตัวอย่างมั้ยครับ ที่สามารถพอจะทดสอบได้อะครับ

ว่าใน c# ของเราสามารถติดต่อได้อะครับ

ส่วนของผมลองใชh odbc ผมอยากรู้ว่า sever ผมต้องใส่ไรไปหรอครับ

Administrator
Tue 13 Feb 2007 13:23:06
โค๊ดตามข้างบนได้เลยครับ
jokkapade
jokkapade
Tue 13 Feb 2007 17:35:11

แล้วเวลาผมใช้ชุดคำสั่ง sql

ในตัวอย่างข้อ 3 ผมควรทำยังไงครับช่วยต่อโค้ดหั้ยได้มั้ยครับ

ใช้ oracleclient connect อะครับ

Administrator
Tue 13 Feb 2007 17:51:08
โค๊ดเป็นการเชื่อมต่อครับ ส่วนการ query ต่างๆก็จะมี OracelCommand, OracleDataAdapter เป็น Interface Class ที่ wrap บน DbCommand, DbDataAdapter การใช้งานก็จะเหมือนๆกับการใช้กับ RDBMS อื่นๆครับ
ตา
ตา
Wed 14 Mar 2007 10:51:08

แล้ว Visual C++.net connect กับ oracle หละค่ะ

วิธีเหมือนกันรึป่าว

stkt
stkt
Thu 11 Oct 2007 18:24:18
ผมใช้ oracle8i จะติดต่อกับ vs.net 2005 ใช้วิธีไหนติดต่อครับ
webmaster
webmaster
Thu 11 Oct 2007 21:31:27
ใช้ oracle client ได้เลยครับ ถนัดใช้แบบไหนก็ได้ทั้งนั้นครับ ต่างกันตรงที่ประสิทธิภาพครับ
stkt
stkt
Fri 12 Oct 2007 13:08:35

ขอบคุณครับ

ผมเขียนเว็บฟอร์ม mobile โดยใช้ VB.NET จะติดต่อกับฐานข้อมูล oracle ไม่รู้ว่าใช้เหมือนกันป่าว และรูปแบบเป็นไงครับ

webmaster
webmaster
Fri 12 Oct 2007 13:49:46
ผมไม่ได้เล่น mobile แต่เข้าใจว่าน่าจะเป็นเพียงแค่ return เป็น tag wml เท่านั้น ซึ่งไม่เกี่ยวกับการติดต่อครับ การติดต่อจะใช้อะไรรูปแบบไหนก็ได้ และไม่ว่าจะเป็น mobile หรือ html หรือ xml มันเป็นเพียงแค่ formatted text ครับไม่เกี่บวกับการติดต่อฐานข้อมูล
อาม
อาม
Sat 13 Oct 2007 07:11:42

 โดยใช้เป็น System.Data.OracleClient  ต้องลง ตัว Oracle Client ด้วยไหม server กับ oracle  อยู่ในเครื่องเดียวกันครับ

อาม
อาม
Sat 13 Oct 2007 07:21:55

ผมต้องการ ใช้ vb.netติดต่อกับฐานข้อมูล oracle นะครับ ติดต่อผ่าน OracleClient ไม่ทราบว่าต้องลง  OracleClient ด้วยหรือป่าว

อาม
อาม
Sat 13 Oct 2007 07:22:56

โคดตัวอย่างบ้างป่าวครับ

webmaster
webmaster
Sat 13 Oct 2007 11:49:50
ไม่ว่าจะอยู่บนเครื่องเดียวกันหรือไม่ก็ต้องมี library Oracle Client ครับ โดยใน Oracle client โค๊ดการติดต่อก็อยู่ที่ดานบนเลยครับ ส่วนการรับค่าก็เอาพวก DataTable มารับค่าได้เหมือน Database Object อื่นๆครับ ถ้าคุณเขียนใน VS.NET แล้วก็จะมี hints บอก parameter และค่าที่ return กลับมาอยู่แล้วครับ
การที่ใช้งาน ODP ได้เหมือน Database Object อื่นๆได้เนื่องจาก ODP เป็น Class Library ที่เป็น wrapper ครอบตัว Abstract Database Class อีกทีเหมือนพวก OleDB, ODBC, MySQL.Net ฯลฯ จึงมีการใช้งานเหมือนกันครับ ลองเอาโค๊ดเขามาลองอ่านดูก็ได้ครับ จะได้ศึกษาว่าการเขียน wrapper class เป็นอย่างไร โค๊ดมีเพียงไม่กี่บรรทัดครับ
อาม
อาม
Sat 13 Oct 2007 14:35:14

ไม่ทราบว่าผมเขียนแบบถูกไหมครับ

Dim strconn As String
Dim sqlproducts As String

        strconn = "provider=\; oraoledb.oracle.1\; user Id = system; password = manager; data source = rmutl;"
        sqlproducts = "select CustomerID"
        sqlproducts &= "from Customers"


        Dim conn As New OleDbConnection(strconn)
        conn.Open()

        Dim com As New OleDbCommand(sqlproducts, conn)
        Dim dr As OleDbDataReader= com.ExecuteReader

        ObjectList1.DataSource = dr
        ObjectList1.DataBind()

        dr.close()

        conn.Close()
    End Sub

webmaster
webmaster
Sun 14 Oct 2007 01:42:48
ถ้าผมจำไม่ผิด DataReader Object ไม่มี method ที่คืนค่ามาเป็น DataTable, DataSet นะครับ
ถ้าจะ port ข้อมูลที่เป็น DataTable, DataSet ก็น่าจะใช้ DataAdapter Object ครับ

ที่ผมว่าน่าจะผิดก็คง query ครับ เพราะเท่าที่ดูข้างหน้า from จะไม่มีช่องว่างครับ โดยปกติผมจะเขียน query เพียงบรรทัดเดียวนอกจากว่ามี sub-query หลายๆอันถึงจะจัดเป็นชุดคำสั่งแยกครับ จะได้ไม่มีปัญหาเรื่อง syntax ของ query
นัด
นัด
Mon 15 Oct 2007 14:36:05

รบกวนช่วยดูโคดให้หน่อยครับ ผมเขียนจะติดต่อกับฐานข้อมูล Oracle8i แต่ติดต่อยังไม่ได้เลยครับไม่รู้ต้องไป set ตรงไหนหรือป่าวช่วยผมหน่อยนะครับขอบคุณนะครับ

Option Explicit On
Option Strict On

Imports System.Data
Imports System.Data.OleDb

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim strConn As String
        Dim sqlProducts As String

        strConn = "provider =msdaora;"&"datasource = rmutl;"&" user ID = system;"&"password = manager;"

        sqlProducts = "SELECT ProductID, ProductName, UnitPrice, UnitsInStock"
        sqlProducts &= " FROM Products"

        Dim Conn As New oledbConnection(strConn)
        Conn.Open()

        Dim Com As New oledbCommand(sqlProducts, Conn)
        Dim dr As oledbDataReader = Com.ExecuteReader

        gvProducts.DataSource = dr
        gvProducts.DataBind()

        dr.Close()
        Conn.Close()
    End Sub
End Class

webmaster
webmaster
Mon 15 Oct 2007 22:46:17
ลอง debug ว่าติดต่อได้หรือไม่ครับ
stkt
stkt
Wed 17 Oct 2007 02:34:07

ขอถามหน่อยครับคือผมลง oracle8i ไป มันไม่แสดงภาษาไทษ ผมต้องไปเซ็ตที่ไหนครับรบกวนหน่อยนะครับ

webmaster
webmaster
Wed 17 Oct 2007 04:32:56
ไม่ได้ใช่นานแล้ว ที่ว่าไม่ได้นี่หมายถึงอะไรครับ
มีข้อมูลเดิมที่เป็นไทยอยู่แล้วหรือว่าสร้างฐานข้อมูลขึ้นมาใหม่ครับ ถ้า query เอาข้อมูลเดิมที่เป็นไทยออกมาไม่ได้ ให้ลองตรวจสอบ connection ให้รองรับภาษาไทยด้วยครับ ส่วนถ้าสร้างฐานข้อมูลใหม่ก็ต้องเลือกแบบที่รองรับภาษาไทยด้วยครับ
อ่านข้อมูลเพิ่มได้ที่ http://www.exzilla.net/docs/nls/nlsdatabase.php
นิ
นิ
Fri 26 Oct 2007 23:15:09

อยากทราบการใช้ภาษา C++ กับ ODBC

การประยุกต์ใช้และการพัฒนาต่อยอกด้วยน่ะค่ะ

รบกวนด้วยน่ะค่ะ  ด่วนที่สุด!

ขอบพระคุณอย่างสูง

ส่งมาที่ gerryberry.nid@hotmail.com

ขอบคุณค่ะ 

ผู้อยากรู้และผ...
ผู้อยากรู้และผู้อยากทำ
Thu 1 Nov 2007 11:50:31

ไม่ทราบว่า OracleClient สามารถใช้ vbscript เขียนได้หรือไม่ครับ

webmaster
webmaster
Thu 1 Nov 2007 16:53:13
ถ้าหมายถึง vbscript ใน internet explorer ไม่ได้ครับ แต่ถ้าหมายถึงภาษา visual basic ได้ครับ
ผู้อยากรู้และผ...
ผู้อยากรู้และผู้อยากเห็น
Thu 8 Nov 2007 12:06:06

หมายถึงว่า C# เป็นแบบนี้

using System.Data.OracleClient;
.......
OracleConnection conn = new OracleConnection();
conn.ConnectionString = "USER ID=scott; PASSWORD=tiger; DATA SOURCE=orcl;";
conn.Open();

แล้วถ้าเป็น VB จะเป็นแบบไหน ผมใช้ Framework 2.0.5 แต่พอ Search ดู ก็เจอตัว

System.Data.OracleClient.dll  นะครับไม่รู้ทำไม Error

ที่ผมลองดูใช้ code แบบนี้

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Data.OracleClient" %>

@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Data.OracleClient" %>

@ Import Namespace="System.Data.OracleClient" %>

<script language="vbscript" runat="server">

script language="vbscript" runat="server">

Private Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)

End Sub

Private Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)

End Sub

End Sub

Public Sub SignIn()

Dim strConn As String = "server=(MSATNEWSERVER); Database=MSTEP2; uid=STEP2; User id=STEP2; pwd=msat"

Public Sub SignIn()

Dim strConn As String = "server=(MSATNEWSERVER); Database=MSTEP2; uid=STEP2; User id=STEP2; pwd=msat"

Dim strConn As String = "server=(MSATNEWSERVER); Database=MSTEP2; uid=STEP2; User id=STEP2; pwd=msat"

Dim myConn As New OracleConnection(strConn)                   <<<--error ไม่เจอ class นี้

Dim strSQL As String = "SELECT * FROM " & TableName & " WHERE USERID = '" & txtUsername.Text & "' AND USERNAM= '" & txtPassword.Text & "' AND USERDPT= '" & "' ORDER BY USEID DESC"

Dim myConn As New OracleConnection(strConn)                   <<<--error ไม่เจอ class นี้

Dim strSQL As String = "SELECT * FROM " & TableName & " WHERE USERID = '" & txtUsername.Text & "' AND USERNAM= '" & txtPassword.Text & "' AND USERDPT= '" & "' ORDER BY USEID DESC"

Dim strSQL As String = "SELECT * FROM " & TableName & " WHERE USERID = '" & txtUsername.Text & "' AND USERNAM= '" & txtPassword.Text & "' AND USERDPT= '" & "' ORDER BY USEID DESC"

Dim myData As New OracleDataAdapter(strSQL, myConn)   <<<--error ไม่เจอ class นี้

Dim ds As New DataSet()

myData.Fill(ds, "Login")

datagrid1.DataSource = ds.Tables("Login")

datagrid1.DataBind()

Dim myData As New OracleDataAdapter(strSQL, myConn)   <<<--error ไม่เจอ class นี้

Dim ds As New DataSet()

myData.Fill(ds, "Login")

datagrid1.DataSource = ds.Tables("Login")

datagrid1.DataBind()

Dim ds As New DataSet()

myData.Fill(ds, "Login")

datagrid1.DataSource = ds.Tables("Login")

datagrid1.DataBind()

"Login")

datagrid1.DataSource = ds.Tables("Login")

datagrid1.DataBind()

"Login")

datagrid1.DataBind()

End Sub

</script>

End Sub

</script>

script>

<html>

<body>

<asp:DataGrid id = "datagrid1" runat = "server" />

asp:DataGrid id = "datagrid1" runat = "server" />

</body>

</html>

ผู้อยากรู้และผ...
ผู้อยากรู้และผู้อยากเห็น
Thu 8 Nov 2007 12:08:51
webbord คุณทำงานผิดปรติ ครับ loop เกินมา 1 loop
webmaster
webmaster
Thu 8 Nov 2007 14:38:05
ขออภัยเรื่อง webboard ด้วยครับยังไม่มีเวลาแก้ไขให้ใส่ code ได้แบบสมบูรณ์สักที -_-!
ส่วนเรื่อง Error นี้ไม่แน่ใจว่าคุณได้...เรียกว่าอะไรล่ะ ไม่ได้ใช้นานลืมแล้ว ต้องทำการ import ตัว oracleclient เข้ามาใน project ของคุณด้วยครับ ขออภัยด้วยครับไม่ได้ใช้นาน
Tornado
Tornado
Thu 10 Jul 2008 14:21:27

ผมใช้ vb6 Connect กับ Oracle 7 โดยผมต้องการ Connect ผ่าน Oracle odbc 32 bit ไม่ใช่ odbc ที่มากับเครื่องนะครับ โดยผม Connect ตามตัวอย่างด้านบนจะฟ้องว่า Datasource Not Found ประมาณนี้ซึ่งผมเข้าใจว่ามันน่าที่จะไปอ่าน odbc ของเครื่อง ทำยังไงให้ connectionstring ไปอ่านที่ oracle odbc 32 bit ครับ โดยผมได้สร้าง Datasource Name ที่ Oracle odbc 32 bit แล้วครับ

webmaster
webmaster
Fri 11 Jul 2008 23:17:05
ลองอ่านที่นี่นะครับ ไม่เห็นมีคนใช้ vb6 นานแล้ว
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login