C#连接oracle问题

appleyk 2011-06-08 03:28:46
我想知道连接oracle数据库之前都应该做些什么。

下面是我的做法:
(1)先创建了一个数据库为test SID=test
(2)然后登录sqlplus /nolog
sql>conn sys/o123 as sysdba;
已经连接;

然后就开始创建表了
create table student_info
(
Sno number(11) primary key not null,
Sname varchar2(10) not null unique,
Ssex varchar2(2),
Sage number,
Spro varchar2(50),
Sclass number

);

然后是插入数据
insert into student_info values(20097750373,'XX,'男',20,'软件开发.Net',3)
insert into student_info values(20097750329,'XX,'男',22,'软件开发.Net',3);

(3)然后就开始在C#中配置了,System.Data.OracleClient.dll我也引用过了;
Using System.Data.OracleClient;

string oracleConStr = "data source=orcl;user id=sys;password=o123";

public Form1()
{
InitializeComponent();
}

public void Connect_oracle()
{
try
{
OracleConnection oracleCon = new OracleConnection(oracleConStr);
oracleCon.Open();
OracleDataAdapter da = new OracleDataAdapter("select * from student_info", oracleCon);
DataSet ds = new DataSet();

da.Fill(ds);

dataGridView1.DataSource = ds.Tables[0].DefaultView;
}
catch(Exception a)
{
throw(a);
}
}

private void button1_Click(object sender, EventArgs e)
{
Connect_oracle();
}


运行时,就出现为解析的错误连接标识,我知道data source数据源我肯定写错了,但是又对连接oracle数据库前前后后该做些什么又不是很清楚,Acess和Sql我都会用,oracle才接触,就遇到了连接字符配置问题;

希望,大家能细说一下应该怎么做,就以我上面的数据库test和表student_info为例,前后顺序都是什么,谢谢了.
...全文
203 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kobayashi 2011-06-09
  • 打赏
  • 举报
回复
你要配一个数据库连接。而且你不能在Sys用户下面建表。你要重新分配一个表空间,用户名和密码。
程序小海 2011-06-09
  • 打赏
  • 举报
回复
哎~ oracle 烦啊~
appleyk 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 iihero 的回复:]
是不是listener没启起来啊?

命令行下执行set ORACLE_SID=orcl
然后lsnrctl start
[/Quote]

启动了.....
iihero_ 2011-06-08
  • 打赏
  • 举报
回复
是不是listener没启起来啊?

命令行下执行set ORACLE_SID=orcl
然后lsnrctl start
appleyk 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 tangren 的回复:]
oracle未找到你的tnsnames.ora文件,无法找到名称为orcl的连接串
1、你有可能在系统中的多个路径中安装了oracle,每个路径下都有tnsnames.ora
2、你的环境变量中是否有%ORACLE_HOME%\bin的相关路径
[/Quote]

C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora

如果如你说的那样,那该怎么办,如何查看环境变量中是否有%ORACLE_HOME%\bin的相关路径?



tangren 2011-06-08
  • 打赏
  • 举报
回复
oracle未找到你的tnsnames.ora文件,无法找到名称为orcl的连接串
1、你有可能在系统中的多个路径中安装了oracle,每个路径下都有tnsnames.ora
2、你的环境变量中是否有%ORACLE_HOME%\bin的相关路径
appleyk 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 tangren 的回复:]
不要把数据库与用户(schema)搞混了,oracle的用户从逻辑上相当于sql server的数据库
一般一台机器上创建一个数据库,一个实例。然后在此基础上可创建多个用户。

你看你默认启动的数据库的实例名是什么?orcl还是test?
sqlplus / as sysdba
select t.INSTANCE_NAME from v$instance t;

sqlplus 用户……
[/Quote]

第一个查出的结果是 orcl

第二个 sqlplus tiger/o123@orcl

出现ORA-12154:TNS:无法解析指定的连接标识符

请输入用户名:
tangren 2011-06-08
  • 打赏
  • 举报
回复
不要把数据库与用户(schema)搞混了,oracle的用户从逻辑上相当于sql server的数据库
一般一台机器上创建一个数据库,一个实例。然后在此基础上可创建多个用户。

你看你默认启动的数据库的实例名是什么?orcl还是test?
sqlplus / as sysdba
select t.INSTANCE_NAME from v$instance t;

sqlplus 用户名/密码@连接串名称
这样连接报什么错?给出错误信息
appleyk 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 tangren 的回复:]
在%ORACLE_HOME%\network\admin\tnsnames.ora
有没有相应的连接配置项,
连接串名称 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 你的机器IP或机器名)(PORT = 1521))
)
(CONNECT_DATA =
(SERVIC……
[/Quote]


两个都测试过了,都无法解析啊,是不是要去掉一个??
appleyk 2011-06-08
  • 打赏
  • 举报
回复
# tnsnames.ora Network Configuration File: c:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

TEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = XP-201102282336)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test)
)
)

ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = XP-201102282336)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)


选哪个啊?
iihero_ 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 appleyk 的回复:]

引用 5 楼 iihero 的回复:
string oracleConStr = "data source=orcl;user id=tiger;password=o123";
很简单。


无法解析制定的连接标识符!

data source 如何查看和修改啊?
[/Quote]

data source的值就是tnsnames.ora中的服务名入口。如果是本机,就是那个SID值。
tangren 2011-06-08
  • 打赏
  • 举报
回复
在%ORACLE_HOME%\network\admin\tnsnames.ora
有没有相应的连接配置项,
连接串名称 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 你的机器IP或机器名)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = 你的SID)
(SERVER = DEDICATED)
)
)

加完之后,使用命令行测试一下
sqlplus 用户名/密码@连接串名称

然后
string oracleConStr = "data source=连接串名称;user id=tiger;password=o123";
appleyk 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 iihero 的回复:]
string oracleConStr = "data source=orcl;user id=tiger;password=o123";
很简单。
[/Quote]

无法解析制定的连接标识符!

data source 如何查看和修改啊?
appleyk 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 appleyk 的回复:]
引用 2 楼 tangren 的回复:
不要在系统用户sys或system下建立自己的表、视图、存储过程对象。
需要自己先建立一个用户
如:建立一个用户为test,密码test
1、使用sys登录
2、建立用户:create user test identified by test default tablespace users;
3、授权:grant create session,……
[/Quote]

还是提示:无法解析制定的连接标识符!
appleyk 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 iihero 的回复:]
string oracleConStr = "data source=orcl;user id=tiger;password=o123";
很简单。
[/Quote]

我试下...
iihero_ 2011-06-08
  • 打赏
  • 举报
回复
string oracleConStr = "data source=orcl;user id=tiger;password=o123";
很简单。
appleyk 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tangren 的回复:]
不要在系统用户sys或system下建立自己的表、视图、存储过程对象。
需要自己先建立一个用户
如:建立一个用户为test,密码test
1、使用sys登录
2、建立用户:create user test identified by test default tablespace users;
3、授权:grant create session,resource to test;
4、……
[/Quote]

接下来,那个 data source 应该如何写?
appleyk 2011-06-08
  • 打赏
  • 举报
回复
sql>conn sys/o123 as sysdba;
已连接;
sql>create user tiger identified by o123;
创建用户成功;
sql>grant connect to tiger;
授权成功;

退出后重新登录;
sql>conn tiger/o123;
已连接;

是不是下面就该创建表了;

如果表创建了,那它属于哪个数据库名下呢,我原先的那个test呢? 还有,此时的Data Source又怎样写呢?

不是很清楚啊
tangren 2011-06-08
  • 打赏
  • 举报
回复
不要在系统用户sys或system下建立自己的表、视图、存储过程对象。
需要自己先建立一个用户
如:建立一个用户为test,密码test
1、使用sys登录
2、建立用户:create user test identified by test default tablespace users;
3、授权:grant create session,resource to test;
4、连接新接用户,然后再创建表、插入数据等。


iihero_ 2011-06-08
  • 打赏
  • 举报
回复
不要用DBA用户来进行开发测试。
创建一个单独的用户或者是scott/tiger等用户都行。

17,086

社区成员

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

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