前天程序基本算走到最后一步,就是从Oracle数据库提取出记录,并根据Redis实时数据进行更新后写入到TaoS数据,最后一步就是写入TaoS数据库了。
总算是完成了。
安装Virual Studio开发环境就用了两天,使用C#进行开发不容易。
连接TaoS数据库必须使用dotnet6.0,写完了入库程序,我也过了这个坎。
执行,结果读取Oracle数据库报错了!!!
怎么可能?!前面正常的,不过是dotnet4.8或者4.7.2,doctnet6是长期稳定版,不会操作oracle有问题吧?
结果还真是!!!
从昨天晚上折腾到今天下午,doctnet6下面连接oracle就是频繁出各种问题,在网络上找了很多资料,一次次尝试,都不行!
写一个基于dotnet6.0的dll用于写入TaoS数据库,主程序是基于dotnet4.8的操作oracle,在主程序中调用dll写入TaoS数据库,也不行!
真是崩溃!
朋友发Oracle.ManagedDataAccess.Core,说试一下这个,前面我试过Oracle.ManagedDataAccess不行,在docnat6以下的版本是可以的,但是偏偏就是在doctnet6这个版本报错,也就没有当回事,就在Nuget下将这个包安装上,心想肯定也一样过不去。
执行,奇葩!正常读取oracle数据了!!!
Oracle.ManagedDataAccess.Core简称ODP,是Oracle公司提供并维护,是一个ADO.net的驱动,提供.net环境下快速访问oracle数据库。
测试代码:
System.Data.DataTable ReturnDT = new System.Data.DataTable();
System.Data.DataSet TempSet = new System.Data.DataSet();
string DBConnStr = "User ID=用户名;Password=密码;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST =主机名)(PORT =1521))) (CONNECT_DATA = (SERVICE_NAME = 服务名)))";
OracleConnection DBConn = new OracleConnection(DBConnStr);
DBConn.Open();
string SqlStr = "查询字符串";
OracleDataAdapter adapter = new OracleDataAdapter(SqlStr, DBConn);
adapter.Fill(TempSet);
ReturnDT = TempSet.Tables[0];
DBConn.Close();
DBConn.Dispose();
adapter.Dispose();
TempSet.Dispose();
dataGridView1.DataSource= ReturnDT;