本文使用的是oracle10g
按照常规把.NETFramework下的System.Data.dll,System.Data.OracleClient.dll复制粘贴到Assets目录下,,VS添加引用。u3d调试运行报错如下:
Internalcompilererror.Seetheconsolelogformoreinformation.outputwas:UnhandledException:System.IO.FileNotFoundException:Couldnotloadfileorassembly’System.EnterpriseServices,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a’oroneofitsdependencies.
解决方案:不能使用.NET的Framework,必须使用mono定制的对应.NETFramework的dll。索引到:d:\ProgramFiles(x86)\Unity\Editor\Data\Mono\lib\mono\2.0
添加该目录下的System.Data.dll,System.Data.OracleClient.dll替换上面的dll.
u3d调试运行,成功.
但是发布的时候不成功,并报错,说缺少相关dll,于是又在Mono目录下添加了提示的dll。成功运行。
添加的dll有:
本测试程序代码如下:
usingUnityEngine;
usingSystem.Collections;
usingSystem.Collections.Generic;
usingSystem.Data;
usingSystem.Data.OracleClient;
publicclassOracleConnect:MonoBehaviour{
string connectStr = "DATA SOURCE=MXSHGC;USER ID=lwhouse;PASSWORD=wms;POOLING=FALSE;"; string DBSpace = "LWHOUSE";
List<string>listOfName=newList<string>();
//Usethisforinitialization
voidStart(){
using (OracleConnection aOracleConnection = new OracleConnection(connectStr)) { aOracleConnection.Open(); string selectStr = "Select s8403 From " + DBSpace + "." + "s84"; OracleCommand aOracleCommand = new OracleCommand(selectStr, aOracleConnection); OracleDataReader aOracleDataReader = aOracleCommand.ExecuteReader(CommandBehavior.CloseConnection); while (aOracleDataReader.Read()) { //MessageBox.Show(aOracleDataReader["NAME"].ToString()); listOfName.Add(aOracleDataReader["s8403"].ToString()); } print("index 0,s8403 is:" + listOfName[0].ToString());}
}
voidOnGUI()
{
if(listOfName.Count>0)
{
GUI.Button(newRect(50,50,100,50),listOfName[0].ToString());
}
else
{
GUI.Button(newRect(50,50,100,50),"哈哈");
}
}
}
愚者用肉体监视心灵,智者用心灵监视肉体