C#和Oracle的交互

倦鸟已归时 / 2023-08-21 / 原文

1. 安装Oracle,略。

2. (非必要,全局用户也可)在sys下创建用户并授权session、create table, create tablespace, create view, unlimited tablespace。

3. 在Visual Studio 创建项目,并将Oracle本地目录下的文件 Oracle.DataAccess.dll 复制到项目的 exe所在目录下(bin/Debug/*)。

4. 调试->添加引用->浏览->找到Oracle.DataAccess.dll 选中然后勾选 确定。然后就可以在项目中 using Oracle.DataAccess.Client 了。

 

数据表的定义:

我的数据表定义为

-- create table
CREATE TABLE COURSE
(
    course_id   number(4) primary key,
    course_name VARCHAR2(16) NOT NULL,
    course_subject VARCHAR2(16) NOT NULL
)

其中 course_id 有一个通过Trigger 定义的 Sequence 作为自增主键约束。

C#程序:

using Oracle.DataAccess.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OracleCommands
{
    class Program
    {
        #region connect to oracle datebase
        public static string ConnectString =
            "Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =127.0.0.1)(PORT =1521))" +
            " (CONNECT_DATA = (SID=****))); User Id=****;Password=****;";  // 这里填写你自己的SID、User Id、Password

        public static OracleConnection DBConn()
        {
            OracleConnection conn;
            conn = new OracleConnection(ConnectString);
            try
            {
                conn.Open();

                string sql = "SELECT * FROM course";
                using (OracleCommand comm = new OracleCommand(sql, conn))
                {
                    using (OracleDataReader rdr = comm.ExecuteReader())
                    {
                        while (rdr.Read())
                        {
                            Console.WriteLine(rdr.GetInt16(0)); // Number(4)
                            Console.WriteLine(rdr.GetString(1)); // varchar(16)
                            Console.WriteLine(rdr.GetString(2)); // varchar(16) } } } Console.WriteLine(
"Connect and Read Success."); } catch (Exception ex) { Console.WriteLine(ex.ToString()); return null; } finally { conn.Close(); } return conn; } #endregion static void Main(string[] args) { DBConn(); Console.ReadKey(); } } }

end。