unity连接Oracle数据库

一、最简单的连接方式,去Oracle官网下载 Oracle.managedDataAccess.dll,将其添加到plugins文件夹下(纯c#开发就直接在vs里面引用就好),接下来在vs里面 using Oracle.managedDataAccess.Client命名空间即可;不想去官网下载可以在这里下载。

以下是连接的简单示例:
在项目里可以建一个Conn类,专门用来处理数据库的连接以及查询等操作

public class ConnDB
{
    protected OracleConnection con;
    string connString =  "User ID=sys;Password=root;DBA Privilege=SYSDBA;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.220)(PORT = 1521)))  (CONNECT_DATA =(SERVICE_NAME = orcl)))";

    public ConnDB()
    {
        con = new OracleConnection(connString);
        try
        {
            Open();
            //Debug.Log("数据库连接成功");
        }
        catch (Exception e)
        {
            
            Debug.Log(e);
        }
       
    }

    public void Open()
    {

        if (con.State == ConnectionState.Closed)
        {
            try
            {
                //打开数据库连接
                con.Open();
            }
            catch (Exception e)
            {
                throw e;
            }
        }
    }

    public void Close()
    {
        if (con.State == ConnectionState.Open)
        {
            con.Close();
        }

    }

  
    public OracleDataReader ExecuteSql(string sql)
    {
        OracleCommand cmd = new OracleCommand(sql, con);
        OracleDataReader dr=null;
        try
        { 
           dr= cmd.ExecuteReader();
          
        }
        catch (OracleException e)
        {
            Debug.Log(e);
        }
        return dr;

    }
}

再建一个测试类用于读取表数据,(别忘了引用命名空间)
public class Test
{

void Start()
{
Load();

}


 void Load()
    {
        ConnDB db = new ConnDB();
        OracleDataReader dr = db.ExecuteSql("select * from CK_BASIC_AREA");

        while (dr.Read())
        {

            CK_BASIC_AREA c = new CK_BASIC_AREA();
            c.Area_id = dr["area_id"].ToString();
            c.Area_code = dr["area_code"].ToString();
            c.Area_name = dr["area_name"].ToString();
            c.State = dr["state"].ToString();
            c.Del_flag = dr["del_flag"].ToString();
            c.Remark = dr["remark"].ToString();
            c.Sec_lvl = dr["sec_lvl"].ToString();


            ck_basic_area_Dic.Add(c.Area_id, c);
        }
        Debug.Log("CK_BASIC_AREA 加载完成");
        db.Close();
    }

}

以上是读取oracle数据库的一种最简单的方法,需要注意的是要使用unity2017以上的版本,在playersetting 里面把脚本的.net版本改成4.6,因为导入的dll版本是4.x的。

还有几种方式也试过,没有成功,在此简单说一下:
二。也是使用Oracle官方提供的连接库,oracle.dataAcess.dll,(odp.net),这种方法貌似要安装客户端,或者需要其他的配置,比较麻烦
三. 微软提供的库:system.data.oracleClient.dll ;有2.0版本的,也有4.x版本的,所以使用unity 5.x的可以到mono 的库里面找到对应的dll,但要引入其他的dll 如oci.dll,之类的,尝试过可以连接但查表一直出现错误,还有一点就是连接的数据库字符串不支持 数据库角色选择,即DBA Privilege=SYSDBA;一种解决方法可以在数据库下新建用户不指定角色。
四。使用第三方库;DDTek.Oracle.dll 没用过


  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值