我希望通过visual studio连接到Oracle数据库,并通过其数据填充datagridview。我对Oracle一无所知。我只有SID,用户名和密码。 这是代码:
using Oracle.DataAccess.Client;
private void Form1_Load(object sender, EventArgs e)
{
var select = "SELECT * FROM tblProject";
conn.ConnectionString = "Data Source=(DESCRIPTION="
+ "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.3.50.205)(PORT=1521)))"
+ "(CONNECT_DATA=(SERVER=DEDICATED)(SID=sid)));"
+ "User Id=username;Password=pass;";
}
using (OracleConnection connection = new OracleConnection(conn.ConnectionString))
{
OracleDataAdapter adapter = new OracleDataAdapter(select, connection);
try
{
connection.Open();
var ds = new DataSet();
adapter.Fill(ds);
dataGridView1.ReadOnly = true;
dataGridView1.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
但连接无法打开?问题出在哪儿? 谢谢
答案 0 :(得分:0)
您可以尝试使用以下代码吗?看起来你在没有使用连接描述符
的tnsnames.ora文件的情况下使用ODP.NETusing Oracle.DataAccess.Client;
private void Form1_Load(object sender, EventArgs e)
{
var select = "SELECT * FROM tblProject";
conn.ConnectionString = "Data Source=(DESCRIPTION="
+ "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.3.50.205)(PORT=1521)))"
+ "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=sid)));"
+ "User Id=username;Password=pass;";
using (OracleConnection connection = new OracleConnection(conn.ConnectionString))
{
connection.Open();
OracleDataAdapter adapter = new OracleDataAdapter(select, connection);
try
{
var ds = new DataSet();
adapter.Fill(ds);
dataGridView1.ReadOnly = true;
dataGridView1.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
在"使用连接描述符"检查此文档。部分 https://docs.oracle.com/cd/B28359_01/win.111/b28375/featConnecting.htm
答案 1 :(得分:0)
市场上有几种DataConnectors。至少来自微软,甲骨文和DevArt。连接字符串不完全兼容。因此,在寻找示例时,您必须注意。
我喜欢尽可能使用ezconnect:
用户名/密码@ [//]主持人[:port] [/ service_name]
少打字 - >减少错误。一旦我不得不连接到一个拒绝旧语法的测试系统,但接受了ezconnect。我从来没有弄明白为什么。