我安装了psqlODBC,当我转到控制面板 - >数据源(ODBC)时,我没有看到安装了Postgres驱动程序.
我重新启动,仍然没有.
然后我注意到,如果我从文件中启动此控制面板小程序,则会c:\WINDOWS\system32\odbccp32.cpl突然出现驱动程序!
这发生在XP 64位机器上.
我无法解释为什么会这样,或者它的含义是什么.
从控制面板启动时,rundll32的命令行是:
"rundll32.exe" shell32.dll,Control_RunDLL "c:\WINDOWS\system32\odbccp32.cpl",
Run Code Online (Sandbox Code Playgroud)
(此数据来自Process Explorer)
odbccp32.cpl从命令行启动时:
"C:\WINDOWS\system32\rundll32.exe" C:\WINDOWS\system32\shell32.dll,Control_RunDLL "C:\WINDOWS\system32\ODBCCP32.CPL",@0
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我是SQL Server用户.
我正在使用oracle的项目(我很少使用)我需要创建一个ODBC连接,所以我可以通过MS Access访问一些数据我的机器上有一个名为oraHome90的应用程序.它似乎允许在"网络配置实用程序"中配置一个称为侦听器的东西,我认为还需要完成"本地网络服务名称配置".IT支持为我提供了设置ODBC连接的信息.我尝试过每一个我能想到的组合.我可以通过测试成功通过测试"登录"到oracle服务器数据库.当我尝试创建ODBC连接时,我收到以下错误:ORA-12154:TNS:无法解析服务名称.
假设我想从头开始,以下信息应该允许我连接到数据库......任何建议或评论?注意:最终项目将有一个网站.ASP页面查询数据,但我必须首先证明我可以通过MS Access使用ODBC连接查看数据
Service name: SERVICENAME
HOST = HOST.XYZi.com
User Id: MYUSERID
Password: MYPASSWORD
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Oracle Connection
Dim ocst
Dim oconn
ocst = "Provider=OraOLEDB.Oracle;" & _
"Data Source=DATASOURCE;" & _
"User ID=CHIJXL;" & _
"Password=password;"
set oconn = CreateObject("ADODB.Connection")
Run Code Online (Sandbox Code Playgroud) 我有一个Crystal报表,其中数据源最初设置为使用ODBC连接.现在我想修改数据源而不是使用OLE DB而不是使用ODBC.如何在不破坏我最初为报告设置的数据库字段的情况下替换数据源连接?如果我尝试删除原始数据源,则还会删除我已设置的字段.有没有办法将报表映射为使用OLE DB而不是ODBC连接?
谢谢.
我正在阅读我的组织中另一位开发人员多年前编写的一些旧代码.在尝试改进此代码时,我发现它使用的查询有一个非常糟糕的问题.
OdbcDataAdapter financialAidDocsQuery =
new OdbcDataAdapter(
@"SELECT a.RRRAREQ_TREQ_CODE,
b.RTVTREQ_SHORT_DESC,
a.RRRAREQ_TRST_DESC,
RRRAREQ_STAT_DATE,
RRRAREQ_EST_DATE,
a.RRRAREQ_SAT_IND,
a.RRRAREQ_SBGI_CODE,
b.RTVTREQ_PERK_MPN_FLAG,
b.RTVTREQ_PCKG_IND,
a.RRRAREQ_MEMO_IND,
a.RRRAREQ_TRK_LTR_IND,
a.RRRAREQ_DISB_IND,
a.RRRAREQ_FUND_CODE,
a.RRRAREQ_SYS_IND
FROM FAISMGR.RRRAREQ a, FAISMGR.RTVTREQ b
WHERE a.RRRAREQ_TREQ_CODE = b.RTVTREQ_CODE
and a.RRRAREQ_PIDM = :PIDM
AND a.RRRAREQ_AIDY_CODE = :AidYear ",
this.bannerOracle);
financialAidDocsQuery.SelectCommand.Parameters.Add(":PIDM", OdbcType.Int, 32).Value = this.pidm;
financialAidDocsQuery.SelectCommand.Parameters.Add(":AidYear", OdbcType.Int, 32).Value = this.aidYear;
DataTable financialAidDocsResults = new DataTable();
financialAidDocsQuery.Fill(financialAidDocsResults);
FADocsGridView.DataSource = financialAidDocsResults;
FADocsGridView.DataBind();
Run Code Online (Sandbox Code Playgroud)
问题是该列a.RRRAREQ_TRST_DESC不存在.在Oracle SQL Developer中运行它时,您可以非常快速地学到这一事实.
奇怪的是?
这段代码有效.
gridview绑定成功.(它不会试图绑定到那个领域.)它已经在生产多年了.
所以,我的问题是......为什么?我从未见过错误的查询工作.我从未见过Oracle允许它或数据提供商破解它.
有谁知道这里发生了什么?
这是一个不寻常的问题,但这里有:
在我的代码中,我意外地在某处取消引用NULL.但是,不是使用segfault崩溃的应用程序,它似乎停止执行当前函数并将控制权返回给UI.这使调试变得困难,因为我通常希望收到崩溃警报,以便我可以附加调试器.
可能是什么导致了这个?
具体来说,我的代码是ODBC驱动程序(即DLL).我的测试应用程序是ODBC测试(odbct32w.exe),它允许我在我的DLL中显式调用ODBC API函数.当我调用其中一个具有已知段错误的函数时,ODBC测试只是将控制权返回给UI而不打印函数调用的结果.然后我可以再次调用我的驱动程序中的任何函数.
我确实知道技术上应用程序调用ODBC驱动程序管理器,它加载并调用我的驱动程序中的函数.但是,由于我的段错误(或正在发生的任何事情)导致驱动程序管理器功能也不返回(由应用程序不打印结果证明),这就是重点.
我的一个有类似机器的同事遇到了同样的问题而另一个没有,但是我们无法确定任何具体的差异.
我做了一些搜索,但没有找到我的问题的确切答案.
有没有办法定义?SQL查询中哪个属于哪个参数?
例如,我需要执行以下操作:
SELECT * FROM myTable WHERE myField = @Param1 OR myField2 = @Param1
OR myField1 = @Param2 OR myField2 = @Param2
Run Code Online (Sandbox Code Playgroud)
相同的查询ODBC是:
SELECT * FROM myTable WHERE myField = ? or myField2 = ? or myField1 = ?
or myField2 = ?
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉ODBC命令哪个参数除了为每个值加载参数两次外?
我怀疑没有,但可以使用更有经验的ODBC程序员的观点.
编辑:我正在使用的ODBC驱动程序是BBj ODBC驱动程序.
尝试使用Windows OBDC驱动程序连接到MySQL数据库时遇到问题.有很多关于明显的搜索命中...人们正在使用旧版本,但是,我不是.
mysqld在CentOS 6.4 32bit上
./usr/libexec/mysqld Ver 5.1.69 for redhat-linux-gnu on i386 (Source distribution)
Run Code Online (Sandbox Code Playgroud)

因此,我无法理解4.1.1协议的来源.有任何想法吗?
我正在尝试通过php的PDO类连接到odbc数据库:
$dsn = 'odbc:CS_HDZipCodes32bit';
$username = 'demo';
$password = 'skdemo!';
$connection = new PDO($dsn, $username, $password);
die( var_dump( $connection ) );
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我得到错误:
致命错误:未捕获异常'PDOException',消息'无法在C:\ inetpub\wwwroot\pdoClass.php中找到驱动程序:7堆栈跟踪:#0 C:\ inetpub\wwwroot\pdoClass.php(7):PDO- > __ construct('odbc:CS_HDZipCo ...','demo','skdemo!')#7 {main}在第7行的C:\ inetpub\wwwroot\pdoClass.php中抛出
该$dsn值是我在ODBC管理器中创建的DSN的名称.
我知道这个特定的DSN有效,因为我能够构建另一个演示文件并通过odbc_connect以下方式成功连接:
$connection = odbc_connect("CS_HDZipCodes32bit", 'demo', 'skdemo!');
if(!$connection){
die('connection failed');
}
$statement = "SELECT * FROM ZipCodes";
$result = odbc_exec($connection, $statement);
// Outputs the zips as expected
var_dump(odbc_result_all($result));
Run Code Online (Sandbox Code Playgroud)
我一直在挖掘PDO-ODBC文档以及其他在线资源,但我无法弄清楚为什么PHP在从PDO尝试时无法找到驱动程序.
有任何想法吗?
我打开我的phpinfo页面以确保按照Marc B的评论安装odbc驱动程序:
看起来安装了驱动程序,除非这是一个不同的驱动程序.
在进一步检查我的phpini每个Marc B的附加注释时,看起来我没有安装POD ODBC特定驱动程序:
所以在这里,如果我安装了pdo的ODBC驱动程序,odbc …
我正在努力将一个Django 1.5.x应用程序容器化,该应用程序通过ODBC连接到单独服务器上的MySQL数据库:
[mysql_default]
database = DB_NAME
driver = /usr/lib64/libmyodbc5.so
server = REMOTE_DB_SERVER
user = DB_USER
password = DB_USER_PWD
port = 3306
Run Code Online (Sandbox Code Playgroud)
我能够通过端口转发和SSH连接到远程数据库,在我的本地机器(docker之外)上运行Django应用程序:
ssh -L 3307:127.0.0.1:3306 MYID@REMOTE_DB_SERVER
Run Code Online (Sandbox Code Playgroud)
我使用Centos 6.x为应用程序设置了Docker容器,但无法使MySQL连接正常工作.容器安装了MySQL并运行了mysqld.
我的docker-compose.yml文件如下所示:
version: "2"
services:
web:
build: .
image: MY_IMAGE
container_name: MY_CONTAINER
network_mode: "host"
ports:
- "3307:3306"
command: /bin/bash
Run Code Online (Sandbox Code Playgroud)
在容器运行的情况下,我可以执行以下命令(在容器外部)以在远程数据库上显示数据库:
docker exec MY_CONTAINER echo "show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3307
Run Code Online (Sandbox Code Playgroud)
但是从容器内部,同样的命令失败:
echo "show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3306
ERROR 2003 (HY000): Can't connect to MySQL …Run Code Online (Sandbox Code Playgroud)