簡體   English   中英

如何將sid和port包含在oracle連接字符串中?

[英]How to include sid and port into an oracle connection string?

我想在連接字符串中指定端口和sid。 以下代碼運行后

public static string ConnectionString
{
    get
    {
        string host = Config.CsHost;
        string sid = Config.CsSID;
        string port = Config.CsPort;
        string user = Config.CsUser;
        string pass = Config.CsPassword;
        return String.Format(@"Data Source = {0}:{1}\{2}; Persist Security Info = True; User Id = {3}; Password = {4}; Unicode = True", host, port, sid, user, pass);
    }
}

...

using (OracleConnection connection = new OracleConnection(ConnectionString))
{
    try
    {
        connection.Open();

Open()沒有響應......問題在於我認為的sid。 可能是什么問題?

更新:我應該使用這種連接字符串。 但我不能很好地解釋它。

數據源=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = MyHost)(PORT = MyPort)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = MyOracleSID))); 用戶ID = myUsername;密碼= myPassword;

有人能幫我解釋一下嗎?

讓我們帶走你在這里的東西

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID))); 
User Id=myUsername;
Password=myPassword;

這是.net連接字符串這部分在這里

(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID))) 

是oracle客戶端連接到SID所需要的。 此部分也可以在TNS Names文件中配置。 在這種情況下,你會有類似的東西

MyOraDbConnection = (DESCRIPTION=(ADDRESS_LIST=...

所以你的.net代碼看起來像

string connStr = "Data Source=MyOraDbConnection;User Id=myUsername;Password=myPassword;"

2

現在,看起來你想要動態地做一些事情。 通常,人們會采用大量的文本框值並將它們連接起來

string dataSource = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" + txtDbServer.Text + ...

另一種方式是

string dataSource = string.Format("(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={1})))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME={2})))",
    txtDbServer.Text,
    txtPort.Text,
    txtSid.Text);

或者,您可以創建ConnStr對象,它不僅可以連接字符串。 它可以保存你的conn字符串 - 偽代碼

class ConnStr
{
    string Server {get;set;}
    string Port {get;set;}
    string Sid {get;set;}
    // more properties

    string GetConnectionString()
    {
        // return your compiled string
    }

    void Save(string switches)
    {
        // Save your string to different places. 
        // For example 
        //      /f myconnfile.txt - will save to application root directory
        //      /f c:\xxx\myconnfile.txt - will save to specific directory
        //      /s myconnsetting  - will save to settings
    }

    void Load(string switches)
    {
        // Load your string from sources. 
    }
}

這是更多的工作,但也更靈活

我不得不將SERVICE_NAME替換為SID,所以這個:

return String.Format("SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={1}))(CONNECT_DATA=(SID={2})));uid={3};pwd={4};", host, port, sid, user, pass);

做了伎倆。

要避免TNS格式,請嘗試以下方法:

Data Source = server:port/SID; User ID = user; Password = mypwd

試試這個連接字符串:

User Id=[user];Password=[pass];Server=[server];Direct=True;Sid=[sid];Port=[port];Persist Security Info=True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM