1.安装/解压oracle客户端(oracle instantclient_11_2),设置环境变量
path添加oracle客户端安装目录
TNS_ADMIN(增加) E:/oracle/product/10.2.0/client_1 (oracle客户端安装目录,可不设置)
NLS_LANG (增加) SIMPLIFIED CHINESE_CHINA.ZHS16GBK(否则查询中文失败)
2.复制unity 安装文件夹内的system.data.dll ;system.data.oracleclient.dll, System.EnterpriseService.dll,system.security.dll;和oracle安装文件夹ora/win64下的oci.dll;ociidbc11.dll;至u3d工程plugins下即可;编辑器环境菜单脚本形式执行无报错,读取数据;build为测试
3.连接测试
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)))"
using System.Data;
using System.Data.Oracleclient;
using System.IO;
using System.Collections;
using System.Diagnostics;
namespace OracleHelper
{
public class OracleHelper
{
private static string connStr = "User Id=admin;Password=123;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=test)))";
#region 执行SQL语句,返回受影响行数
public static int ExecuteNonQuery(string sql, params OracleParameter[] parameters)
{
using (OracleConnection conn = new OracleConnection(connStr))
{
conn.Open();
using (OracleCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteNonQuery();
}
}
}
#endregion
#region 执行SQL语句,返回DataTable;只用来执行查询结果比较少的情况
public static DataTable ExecuteDataTable(string sql, params OracleParameter[] parameters)
{
using (OracleConnection conn = new OracleConnection(connStr))
{
conn.Open();
using (OracleCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
OracleDataAdapter adapter = new OracleDataAdapter(cmd);
DataTable datatable = new DataTable();
adapter.Fill(datatable);
return datatable;
}
}
}
#endregion
}
}
4. system.data.oracleclient.dll连接似乎不支持“”DBA Privilege=SYSDBA”
参考1.https://blog.csdn.net/qq_36801146/article/details/80511656