• 7397阅读
  • 6回复

急!!odbc连接不上 [复制链接]

上一主题 下一主题
离线yleesun
 

只看楼主 倒序阅读 楼主  发表于: 2009-01-15
— 本帖被 XChinux 执行加亮操作(2009-01-16) —
我用odbc连接oracle数据库:
代码如下:
              db = QSqlDatabase::addDatabase(dbtype,"db");
        db.setHostName("zxjy250");    // 这里用的数据库服务器的主机名称,用ip结果是一样的。
        db.setDatabaseName("HUDB");
        db.setUserName("zxd");
        db.setPassword("zxd");
        db.setPort(1521);
        connOk = db.open();
        if(!m_Curconn.isOpen())
            QMessageBox::warning(0,"",db.lastError().text());
结果提示如下错误:
[Microsoft][ODBC driver for Oracle][Oracle]ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME QODBC3: 不能连接
希望知道,能告诉下,这个问题已经困扰我好几天了。感激不尽。
离线sanghk

只看该作者 1楼 发表于: 2009-01-15
好像是你的驱动原因,必须使用oracle自己的驱动才可以,不然就算能连上,读取的数据了有问题。可以试试连接MDB的数据源,是否能连上?
你的连接方式好像也不太对,使用ODBC连接,你要设置的是你的ODBC数据源的名称 (QSqlDatabase::setDatabaseName() ) ,setHostName没有用。
离线yleesun

只看该作者 2楼 发表于: 2009-01-15
我设置数据源了,在控制面板中添加了数据源。如果setHostName没有用,那如何知道数据库服务器在哪里呢?
离线sanghk

只看该作者 3楼 发表于: 2009-01-15
数据库服务器当然在数据源中已经指定好了。
离线yleesun

只看该作者 4楼 发表于: 2009-01-15
数据源里指定了tnsservicename,这个是不是指oracle客户端的.ora文件。比如内容如下:
HUDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.250)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = dmsdb)
    )
  )
 
离线machou

只看该作者 5楼 发表于: 2010-01-20
                      QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setHostName("192.168.0.0");
//    QString dsn = QString::fromLocal8Bit("Driver={microsoft odbc for oracle};server=db;uid=test;pwd=pass");

//    db.setDatabaseName(dsn);
    db.setDatabaseName("rsdb");//配好的数据源,如果没有数据源,就有上面的
    db.setUserName("test");
    db.setPassword("pass");
    db.setPort(1521);
离线lxbin2003

只看该作者 6楼 发表于: 2010-01-21
setPort也没用
快速回复
限100 字节
 
上一个 下一个