怪异的ORA-12154

autumnlj 2009-08-31 03:18:01
C#写的Win form 程序,需要读取Oracle数据库信息。
现在:
1.在PL/SQL Developer 中能正常读取Oracle;
2.sqlplus能正常读取Oracle;
3.Net Manage 下测试服务名正常连通;
4.到C#程序里,提示“ORA-12154: TNS:could not resolve service name”;

百思不得其解,望哪位高人给解决下.

注:以上各种连接都是在同一台机器上连接远程的Oracle。
...全文
1740 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
白发程序猿 2009-09-01
  • 打赏
  • 举报
回复
要贴的是你的数据库连接的代码
ckc 2009-09-01
  • 打赏
  • 举报
回复
不懂c#,不过看你的代码很奇怪,没看到数据库连接相关的设置啊
只看到你在调用sql
hotyxm 2009-09-01
  • 打赏
  • 举报
回复
试试下面的方法看一下
#region 类中的全局变量

private OracleConnection sqlcon; //申明一个SqlConnection对象
private OracleCommand sqlcom; //申明一个SqlCommand对象
private OracleDataAdapter sqldata; //申明一个SqlDataAdapter对象
private string ConnStr;

#endregion

#region 构造函数

/// <summary>

/// 构造函数,初始化时连接数据库
/// </summary>
public DB_Common()
{
string connStr;
connStr ="Data Source=SID;user=asset;password=trasset;";//
sqlcon = new OracleConnection(connStr);
}

#endregion

#region 打开数据库
/// <summary>
/// 打开数据库
/// </summary>
public void OpenConn()
{
if (this.sqlcon.State != ConnectionState.Open)
this.sqlcon.Open();
}
#endregion
#region 关闭数据库联接
/// <summary>
/// 关闭数据库联接
/// </summary>
public void CloseConn()
{
if (sqlcon.State == ConnectionState.Open)
sqlcon.Close();
}
#endregion

public DataSet ExceDS(string SqlCom)
{
try
{
OpenConn();
sqlcom = new OracleCommand(SqlCom, sqlcon);
sqldata = new OracleDataAdapter();
sqldata.SelectCommand = sqlcom;
DataSet ds = new DataSet();
sqldata.Fill(ds);
return ds;
}
finally
{
// sqlcon.Close();
CloseConn();
}
}


这样调用
dataset ds = fn.ExceDS(sql);
response.writ(ds.table[0].rows.count);
inthirties 2009-09-01
  • 打赏
  • 举报
回复
你的c#是用的什么方式连接的oracle数据库odbc.oci, ...
lihan6415151528 2009-09-01
  • 打赏
  • 举报
回复
建议到c#那里问问 ,不是ora的问题
zhangwonderful 2009-09-01
  • 打赏
  • 举报
回复
把连接字符串粘贴出来看看,应该是连接字符串的问题。请仔细检查tnsname.ora中配置的SID与安装的数据库SID是否一致,连接字符串中的SID是否与数据库SID一致。
vivi09 2009-08-31
  • 打赏
  • 举报
回复
试试在环境变量里添加
ORACLE_SID=XXXX(SID名)
ojuju10 2009-08-31
  • 打赏
  • 举报
回复
不懂c#,建议到c#模块提问
autumnlj 2009-08-31
  • 打赏
  • 举报
回复
直接改成下面的代码也不行:

public DataTable GetSensors(OracleConnection conn)
{
DataTable table1 = null;
try
{
table1 = new DataTable();
conn.Open();
string sql = "select * from BRN_DATA_POINTTABLE";
OracleCommand command = new OracleCommand();
command.CommandText = sql;
command.Connection = conn;
OracleDataAdapter adapter = new OracleDataAdapter(command);
adapter.Fill(table1);
}
catch (Exception e)
{
string content = e.Message + "连接字符串:\"" + conn.ConnectionString + "\"";
Log.Write(2, content);
}
return table1;
}
autumnlj 2009-08-31
  • 打赏
  • 举报
回复
OracleHelper用的微软的Petshop里面的
autumnlj 2009-08-31
  • 打赏
  • 举报
回复
public static DataTable ExecuteDataTable(OracleConnection conn, CommandType cmdType, string cmdText, string tablename, params OracleParameter[] commandParameters)
{
DataSet inds = new DataSet();
OracleDataAdapter Da = new OracleDataAdapter(cmdText, conn);
PrepareCommand(Da.SelectCommand, conn, null, cmdType, cmdText, commandParameters);

Da.Fill(inds, tablename);
Da.SelectCommand.Parameters.Clear();
Da.Dispose();
return inds.Tables[0];
}
cab1225 2009-08-31
  • 打赏
  • 举报
回复
学习一下!!!!
autumnlj 2009-08-31
  • 打赏
  • 举报
回复
public DataTable GetTableInfo(OracleConnection conn)
{
string strSql = "select * from tableA";
string strTableName = "tableA";
DataTable dt = null;
try
{
dt = OracleHelper.ExecuteDataTable(conn, CommandType.Text, strSql , strTableName, null);
}
catch (Exception e)
{
string content = e.Message + "连接字符串:\"" + conn.ConnectionString + "\"";
Log.Write(content);
}
return dt;
}
cosio 2009-08-31
  • 打赏
  • 举报
回复
C#连接ORACLE的语句贴出来看看!
bzcnc 2009-08-31
  • 打赏
  • 举报
回复
帮lZ顶一下,有的使用使用语言连接oracle数据库,并不是数据库本身的问题,有的时候是编程语言的问题,仅供参考
autumnlj 2009-08-31
  • 打赏
  • 举报
回复
TNS一直用的是IP
cosio 2009-08-31
  • 打赏
  • 举报
回复
看一下TNS配置,都改为IP试试!

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧