![](/img/trans.png)
[英]Kerberos error when connecting to Oracle database in .NET Core
[英]Error while connecting to oracle database from .net
我正在使用System.data.oracleclient命名空間,並將該dll放在我的項目中
我用連接字符串作為
SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xx.x.xxx)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=xxxx)));uid=xxxx;pwd=xxxx;
在運行應用程序時,我收到響應消息為
OCIEnvCreate failed with return code -1 but error message text was not available.
我不知道我在哪里卡住...
任何人都可以為我提供解決此問題的任何指導方針。
我也瞥了一眼,但沒有得到正確的解決方案。
等待您的寶貴建議和意見
更新1:
我使用的代碼是
con = new OracleConnection(conStr);
con.Open(); // connection must be openned for command
query = "insert into table1 values ('ss');
cmd = new OracleCommand(query, con);
if(cmd.ExecuteNonQuery()>0)
{
Console.WriteLine("insert sucess!");
}
con.Close();
我的堆棧跟蹤錯誤是
at System.Data.OracleClient.OciHandle..ctor(OciHandle parentHandle, HTYPE handleType, MODE ocimode, HANDLEFLAG handleflags)
at System.Data.OracleClient.OracleInternalConnection.OpenOnLocalTransaction(String userName, String password, String serverName, Boolean integratedSecurity, Boolean unicode, Boolean omitOracleConnectionName)
at System.Data.OracleClient.OracleInternalConnection..ctor(OracleConnectionString connectionOptions)
at System.Data.OracleClient.OracleConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OracleClient.OracleConnection.Open()
at oracleTest.Program.getconnection() in D:\oracle\oracletst[via-oracleclient]\oracletst\Program.cs:line 29
at oracleTest.Program.Main(String[] args) in D:\oracle\oracletst[via-oracleclient]\oracletst\Program.cs:line 21
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
我看到的2件事可能是導致問題的原因
con
& cmd
似乎是一個共享變量。 試試這個,看看問題是否仍然存在。
using(var con = new OracleConnection(conStr))
using(var cmd = con.CreateCommand())
{
con.Open();
cmd.CommandText = "insert into table1 values ('ss');
if(cmd.ExecuteNonQuery() > 0)
{
Console.WriteLine("insert sucess!");
}
}
因為我們使用的是using
關鍵字,所以當該塊退出時,它將自動調用con / cmd.Dispose()。 Dispose()將自動調用Close()。
編輯以確保您的連接字符串格式正確。 http://www.connectionstrings.com/oracle
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.