Bạn Tìm Gì Hôm Nay ...?
Tất cả đều có chỉ trong 1 nốt nhạc !
Nếu cần hỗ trợ chi tiết gọi 1900 9477
Trước hết bạn cần phải hiểu cơ chế kết nối từ một chương trình C# vào Database Oracle.
Mô hình 1:
Mô hình 2:
Mô hình 2 cho phép bạn kết nối trực tiếp vào Oracle, mà không cần phải cài đặt Oracle Client trên máy tính chạy ứng dụng C#. Dịch vụ hosting window tại P.A Việt Nam không có sẵn Oracle Client do đó bạn cần thực hiện theo mô hình này
Bạn cần phải copy một vài thư viện DLL của Oracle client, và một vài thư viện ODAC XCopy vào project.
Và vì không sử dụng Oracle Client, nên không có file tnsname.ora chứa thông tin của database Oracle, vì vậy Connection String cần phải chứa các thông số của database giống như nội dung của file tnsname.ora.
// Connection String kết nối trực tiếp tới Oracle.
string connString = "Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = "
+ host + ")(PORT = " + port + "))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = "
+ sid + ")));Password=" + password + ";User ID=" + user;
Truy cập link : http://www.oracle.com/technetwork/topics/dotnet/index-085163.html
Sau khi click vào link ảnh trên sẽ chạy ra link mới : http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html
Trường hợp download 64bit:
Trường hợp download 32bit
Chú ý: Bạn có thể sử dụng phiên bản 32bit vừa download được để sử dụng (Kể cả hệ điều hành của bạn đang sử dụng là 64bit), nếu sử dụng phiên bản 64bit đôi khi sử dụng C# kết nối vào Oracle bạn nhận được một lỗi sau:
An unhandled exception of type 'System.BadImageFormatException' occurred in mscorlib.dll
Additional information: Could not load file or assembly 'Oracle.DataAccess, Version=4.121.2.0,
Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies.
An attempt was made to load a program with an incorrect format.
Mặc dù máy tính của tôi là hệ điều hành 64bit, nhưng tôi sẽ sử dụng ODAC 32bit vừa download được ở bước trên.
Tôi tạo một project có tên ConnectOracleWithoutClient:
Giải nén file zip bạn đã download được trước đó.
Directory | File Copy |
<DIR>/instantclient_12_1 | oci.dll |
orannzsbb12.dll | |
oraocci12.dll | |
oraocci12d.dll | |
oraociei12.dll | |
oraons.dll | |
<DIR>/odp.net4/odp.net/bin/4 | Oracle.DataAccess.dll |
<DIR>/oramts/bin | oramts.dll |
oramts12.dll | |
oramtsus.dll | |
<DIR>/odp.net4/bin | OraOps12.dll |
Copy và Paste các file trên trực tiếp vào project của bạn trên Visual Studio:
Khai báo thư viện, tham chiếu tới Oracle.DataAccess.dll.
Class DBOracleUtils có một phương thức tiện ích để kết nối trực tiếp vào Oracle.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.DataAccess.Client;namespace Tutorial.SqlConn
{
class DBOracleUtils
{public static OracleConnection
GetDBConnection(string host, int port, String sid, String user, String password)
{Console.WriteLine(“Getting Connection …”);
// ‘Connection String’ kết nối trực tiếp tới Oracle.
string connString = “Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = ”
+ host + “)(PORT = ” + port + “))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = ”
+ sid + “)));Password=” + password + “;User ID=” + user;OracleConnection conn = new OracleConnection();
conn.ConnectionString = connString;
return conn;
}}
}
namespace Tutorial.SqlConn
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.DataAccess.Client;
{
class DBUtils
{
public static OracleConnection GetDBConnection()
{
string host = “192.168.205.1”;
int port = 1521;
string sid = “db12c”;
string user = “simplehr”;
string password = “12345”;return DBOracleUtils.GetDBConnection(host, port, sid, user, password);
}
}
}
namespace ConnectOracleWithoutClient
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.DataAccess.Client;
using Tutorial.SqlConn;
{
static class Program
{static void Main(string[] args)
{
//
OracleConnection conn = DBUtils.GetDBConnection();
Console.WriteLine(“Get Connection: ” + conn);
try
{
conn.Open();
Console.WriteLine(conn.ConnectionString, “Successful Connection”);
}
catch (Exception ex)
{
Console.WriteLine(“## ERROR: ” + ex.Message);
Console.Read();
return;
}
Console.WriteLine(“Connection successful!”);
Console.Read();
}
}
}