我想知道连接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为例,前后顺序都是什么,谢谢了.

解决方案 »

  1.   

    不要用DBA用户来进行开发测试。
    创建一个单独的用户或者是scott/tiger等用户都行。
      

  2.   

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

  3.   

    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又怎样写呢?不是很清楚啊
      

  4.   


    接下来,那个  data source 应该如何写? 
      

  5.   

    string oracleConStr = "data source=orcl;user id=tiger;password=o123";
    很简单。
      

  6.   


    无法解析制定的连接标识符!data source 如何查看和修改啊?
      

  7.   

    在%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";
      

  8.   


    data source的值就是tnsnames.ora中的服务名入口。如果是本机,就是那个SID值。
      

  9.   

    # 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)
        )
      )
    选哪个啊?
      

  10.   

    不要把数据库与用户(schema)搞混了,oracle的用户从逻辑上相当于sql server的数据库
    一般一台机器上创建一个数据库,一个实例。然后在此基础上可创建多个用户。你看你默认启动的数据库的实例名是什么?orcl还是test?
    sqlplus / as sysdba
    select t.INSTANCE_NAME from v$instance t;sqlplus 用户名/密码@连接串名称
    这样连接报什么错?给出错误信息
      

  11.   


    第一个查出的结果是 orcl第二个 sqlplus tiger/o123@orcl出现ORA-12154:TNS:无法解析指定的连接标识符请输入用户名:
      

  12.   

    oracle未找到你的tnsnames.ora文件,无法找到名称为orcl的连接串
    1、你有可能在系统中的多个路径中安装了oracle,每个路径下都有tnsnames.ora
    2、你的环境变量中是否有%ORACLE_HOME%\bin的相关路径
      

  13.   


    C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora如果如你说的那样,那该怎么办,如何查看环境变量中是否有%ORACLE_HOME%\bin的相关路径?
      

  14.   

    是不是listener没启起来啊?命令行下执行set ORACLE_SID=orcl
    然后lsnrctl start
      

  15.   

    你要配一个数据库连接。而且你不能在Sys用户下面建表。你要重新分配一个表空间,用户名和密码。