C#和Oracle的交互

发布时间 2023-08-21 19:29:10作者: 倦鸟已归时

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.GetString(1));  // 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。