unity连接Oracle数据库

来源:互联网 发布:php require|token 编辑:程序博客网 时间:2024/05/14 05:31

一、最简单的连接方式,去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 没用过


原创粉丝点击