NewLife/X

Oracle驱动提示
nnhy authored at 2011-10-28 18:09:20
f3e5655
Tree
1 Parent(s) 14d50c7
Summary: 11 changed files with 48 additions and 678 deletions.
Modified +0 -0
Added +0 -0
Modified +0 -0
Modified +2 -2
Deleted +0 -22
Test/OpsInit.cs
Deleted +0 -237
Test/OracleInit.cs
Deleted +0 -395
Test/OraTrace.cs
Modified +29 -11
Modified +1 -6
Modified +1 -1
Modified +15 -4
Modified +0 -0
diff --git a/DLL/Oracle/Oracle.DataAccess.dll b/DLL/Oracle/Oracle.DataAccess.dll
index e02415b..05d2075 100644
Binary files a/DLL/Oracle/Oracle.DataAccess.dll and b/DLL/Oracle/Oracle.DataAccess.dll differ
Added +0 -0
diff --git a/DLL/Oracle/OraOps11w.dll b/DLL/Oracle/OraOps11w.dll
new file mode 100644
index 0000000..3003c67
Binary files /dev/null and b/DLL/Oracle/OraOps11w.dll differ
Modified +0 -0
diff --git a/DLL/Oracle/zh-CHS/Oracle.DataAccess.resources.dll b/DLL/Oracle/zh-CHS/Oracle.DataAccess.resources.dll
index 1346e4a..5f02c8d 100644
Binary files a/DLL/Oracle/zh-CHS/Oracle.DataAccess.resources.dll and b/DLL/Oracle/zh-CHS/Oracle.DataAccess.resources.dll differ
Modified +2 -2
diff --git a/Test/App.config b/Test/App.config
index 77fb4f1..3f27f16 100644
--- a/Test/App.config
+++ b/Test/App.config
@@ -29,7 +29,7 @@
     <!--要排除的链接名,多个用逗号分隔,默认空。-->
     <add key="XCode.Schema.Exclude" value=""/>
     <!--连接名映射,把实体类中的Test2和Test3连接名映射到Test去-->
-    <add key="XCode.ConnMaps" value="Common#Oracle,EntityTest@Oracle"/>
+    <!--<add key="XCode.ConnMaps" value="Common#Oracle,EntityTest@Oracle"/>-->
 
     <!--模版引擎配置-->
     <!--是否启用调试,默认不启用-->
@@ -52,7 +52,7 @@
     <add name="Common3" connectionString="Data Source=Common.db;Version=3;" providerName="Sqlite"/>
     <!--启用OLEDB连接池OLE DB Services=-1(EnableAll = -1)-->
     <add name="Common4" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=~\AppData\Common.mdb;Persist Security Info=False;"/>
-    <add name="Oracle" connectionString="Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = jslswb.com)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ORC)));User ID=admin;Password=admin;" providerName="System.Data.OracleClient"/>
+    <add name="Common" connectionString="Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = jslswb.com)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ORC)));User ID=admin;Password=admin;" providerName="System.Data.OracleClient"/>
   </connectionStrings>
   <oracle.dataaccess.client>
     <settings>
Deleted +0 -22
Test/OpsInit.cs
Deleted +0 -237
Test/OracleInit.cs
Deleted +0 -395
Test/OraTrace.cs
Modified +29 -11
diff --git a/Test/Program.cs b/Test/Program.cs
index 7e9f9e6..0e0da76 100644
--- a/Test/Program.cs
+++ b/Test/Program.cs
@@ -12,6 +12,9 @@ using System.Text;
 using System.Reflection;
 using System.Data.Common;
 using NewLife.Reflection;
+using XCode.DataAccessLayer;
+using System.Collections.Generic;
+using System.Data.OracleClient;
 
 namespace Test
 {
@@ -28,7 +31,7 @@ namespace Test
                 try
                 {
 #endif
-                Test2();
+                    Test2();
 #if !DEBUG
                 }
                 catch (Exception ex)
@@ -67,23 +70,38 @@ namespace Test
 
         static void Test2()
         {
-            Type type = TypeX.GetType("Oracle.DataAccess.Client.OpsInit", true);
+            //OracleClientFactory d = OracleClientFactory.Instance;
+            //Console.WriteLine(d);
+
+            Type type = null;
+            //type = TypeX.GetType("Oracle.DataAccess.Client.OpsInit", true);
             //MethodInfoX mix = MethodInfoX.Create(type, "CheckVersionCompatibility");
             //mix.Invoke(null, "2.112.1.0");
             //OpsInit.CheckVersionCompatibility("2.112.1.0");
-            OracleInit.Initialize();
+            //OracleInit.Initialize();
+
+            List<IDataTable> tables = DAL.Create("Common").Tables;
+            Console.WriteLine(tables);
 
-            //Administrator admin = Administrator.FindAll()[0];
-            //Console.WriteLine(admin);
+            //try
+            //{
+            //    Assembly asm = Assembly.LoadFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Oracle.DataAccess.dll"));
+            //    type = asm.GetType("Oracle.DataAccess.Client.OracleClientFactory");
 
-            Assembly asm = Assembly.LoadFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Oracle.DataAccess.dll"));
-            type = asm.GetType("Oracle.DataAccess.Client.OracleClientFactory");
+            //    FieldInfo field = type.GetField("Instance");
+            //    //DbProviderFactory df= Activator.CreateInstance(type) as DbProviderFactory;
 
-            FieldInfo field = type.GetField("Instance");
-            //DbProviderFactory df= Activator.CreateInstance(type) as DbProviderFactory;
+            //    DbProviderFactory df = field.GetValue(null) as DbProviderFactory;
+            //    Console.WriteLine(df);
+            //}
+            //catch (Exception ex)
+            //{
+            //    Console.WriteLine(ex.ToString());
+            //}
+            //Console.ReadKey(true);
 
-            DbProviderFactory df = field.GetValue(null) as DbProviderFactory;
-            Console.WriteLine(df);
+            Administrator admin = Administrator.FindAll()[0];
+            Console.WriteLine(admin);
         }
     }
 }
\ No newline at end of file
Modified +1 -6
diff --git a/Test/Test.csproj b/Test/Test.csproj
index d3513ec..8cee9b8 100644
--- a/Test/Test.csproj
+++ b/Test/Test.csproj
@@ -57,21 +57,16 @@
     <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Oracle.DataAccess, Version=2.112.1.2, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86">
-      <HintPath>..\DLL\Oracle\Oracle.DataAccess.dll</HintPath>
-    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Configuration" />
     <Reference Include="System.Data" />
+    <Reference Include="System.Data.OracleClient" />
     <Reference Include="System.Management" />
     <Reference Include="System.Web" />
     <Reference Include="System.Web.Services" />
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="OpsInit.cs" />
-    <Compile Include="OracleInit.cs" />
-    <Compile Include="OraTrace.cs" />
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="SerialTest.cs" />
Modified +1 -1
diff --git a/XCode/DataAccessLayer/Common/DbSession.cs b/XCode/DataAccessLayer/Common/DbSession.cs
index 5f25bd2..a31927c 100644
--- a/XCode/DataAccessLayer/Common/DbSession.cs
+++ b/XCode/DataAccessLayer/Common/DbSession.cs
@@ -555,7 +555,7 @@ namespace XCode.DataAccessLayer
                 cmd.CommandText = sql;
                 Object rs = cmd.ExecuteScalar();
                 //return rs == DBNull.Value ? null : rs;
-                if (rs == DBNull.Value) return default(T);
+                if (rs == null || rs == DBNull.Value) return default(T);
                 if (rs is T) return (T)rs;
                 return (T)Convert.ChangeType(rs, typeof(T));
             }
Modified +15 -4
diff --git a/XCode/DataAccessLayer/Database/Oracle.cs b/XCode/DataAccessLayer/Database/Oracle.cs
index 2dfb96a..51c1fc5 100644
--- a/XCode/DataAccessLayer/Database/Oracle.cs
+++ b/XCode/DataAccessLayer/Database/Oracle.cs
@@ -5,9 +5,9 @@ using System.Data.Common;
 using System.IO;
 using System.Text.RegularExpressions;
 using NewLife;
+using NewLife.Configuration;
 using XCode.Common;
 using XCode.Exceptions;
-using NewLife.Configuration;
 
 namespace XCode.DataAccessLayer
 {
@@ -39,7 +39,9 @@ namespace XCode.DataAccessLayer
                         {
                             try
                             {
-                                _dbProviderFactory = GetProviderFactory("Oracle.DataAccess.dll", "Oracle.DataAccess.Client.OracleClientFactory");
+                                String fileName = "Oracle.DataAccess.dll";
+                                _dbProviderFactory = GetProviderFactory(fileName, "Oracle.DataAccess.Client.OracleClientFactory");
+                                if (_dbProviderFactory != null && DAL.Debug) DAL.WriteDebugLog("Oracleʹ���ļ�����{0}", _dbProviderFactory.GetType().Assembly.Location);
                             }
                             catch (FileNotFoundException) { }
                             catch (Exception ex)
@@ -49,8 +51,17 @@ namespace XCode.DataAccessLayer
                         }
 
                         // �������ַ�ʽ�����Լ��أ�ǰ����ֻ��Ϊ�˼��ٶԳ��򼯵����ã��ڶ�����Ϊ�˱����һ����û��ע��
-                        if (_dbProviderFactory == null) _dbProviderFactory = DbProviderFactories.GetFactory("System.Data.OracleClient");
-                        if (_dbProviderFactory == null) _dbProviderFactory = GetProviderFactory("System.Data.OracleClient.dll", "System.Data.OracleClient.OracleClientFactory");
+                        if (_dbProviderFactory == null)
+                        {
+                            _dbProviderFactory = DbProviderFactories.GetFactory("System.Data.OracleClient");
+                            if (_dbProviderFactory != null && DAL.Debug) DAL.WriteDebugLog("Oracleʹ����������{0}", _dbProviderFactory.GetType().Assembly.Location);
+                        }
+                        if (_dbProviderFactory == null)
+                        {
+                            String fileName = "System.Data.OracleClient.dll";
+                            _dbProviderFactory = GetProviderFactory(fileName, "System.Data.OracleClient.OracleClientFactory");
+                            if (_dbProviderFactory != null && DAL.Debug) DAL.WriteDebugLog("Oracleʹ��ϵͳ����{0}", _dbProviderFactory.GetType().Assembly.Location);
+                        }
                         //if (_dbProviderFactory == null) _dbProviderFactory = OracleClientFactory.Instance;
                     }
                 }