标签: sqlanywhere

使用ODBC和PHP检索存储过程的数据

我正在尝试使用ODBC和PHP检索out参数的值.我一直在网上搜索但无济于事.PDO和mysqli有很多解析,我只为odbc 找到了这个.我有点迷失参数和操作涉及.

我能够建立与数据库的连接,但总是弹出错误.我无法理解它们.

[Sybase] [ODBC驱动程序]无效的字符串或缓冲区长度

有什么建议吗?

<?php

$conn=odbc_connect("dsn", " ", " ");

if (!$conn)
{
exit("Connection Failed: " . $conn);
}

$sql=odbc_prepare("CALL ndTblUser (@varUserId,@varUserPwd)"); 
$stmt=odbc_execute($sql, "SELECT @varUserId as UserId, @varUserPwd as UserPwd");

$rs=odbc_exec($conn,$stmt);

if (!$rs)
{
exit("Error : " . odbc_errormsg());
}
echo "<table><tr>";
echo "<th>Id</th>";
echo "<th>Password</th></tr>";

while (odbc_fetch_row($rs))
{
$UserId=odbc_result_all($rs,"UserId");
$UserPwd=odbc_result_all($rs,"UserPwd");
echo "<tr><td>$UserId</td>";
echo "<td>$UserPwd</td></tr>";
}

odbc_close($conn);
?>
Run Code Online (Sandbox Code Playgroud)

php sql odbc sqlanywhere

7
推荐指数
1
解决办法
401
查看次数

PDO + SqlAnywhere,它可能吗?

我想在SqlAnywhere中使用PHP PDO,但在php站点上没有驱动程序.我可以添加一个sqlanywhere的lib来与PDO一起使用吗?ODBC是最后一个选项.

php pdo sqlanywhere

6
推荐指数
2
解决办法
1508
查看次数

使用PDO连接到Sybase的正确DSN


我正在尝试使用PHP的PDO连接到Sybase(SQL Anywhere 12)数据库.我花了好几个小时试图找到正确的驱动程序和DSN使用,没有成功.每次我尝试编辑单个参数时,我总是会遇到错误.我尝试了几十种不同的DSN参数组合,没有任何反应.我在这里只报告一些只是为了举例说明我想要获得的东西.

我成功安装了PDO驱动程序 - 来自php.ini:

PDO drivers     dblib, mysql, odbc, pgsql 

PDO Driver for FreeTDS/Sybase DB-lib        enabled
Flavour                                     freetds 
Run Code Online (Sandbox Code Playgroud)

DB参数:

DB的IP为192.168.100.234,db实例和db名称均为GAMMA01.我不能告诉你用户名和密码,但是让我们说:用户dba和pwd好吧.
我可以从尝试启动连接的服务器ping服务器.

我在Linux Debian Squeeze和PHP 5.3.3下.

DBLIB:

我无法找到正确的DSN来连接到我的数据库服务器.

DSN版本1:

'dblib:host=192.168.100.234;DBN=GAMMA01'
Run Code Online (Sandbox Code Playgroud)

DSN第2版:

'dblib:host=192.168.100.234;DBN=GAMMA01;UID=dba;PWD=allright;Server=GAMMA01;ASTART=No'
Run Code Online (Sandbox Code Playgroud)

DSN第3版:

new PDO('dblib:host=192.168.100.234;dbname=GAMMA01', 'dba', 'allright');
Run Code Online (Sandbox Code Playgroud)

我得到的错误

 SQLSTATE[HY000] Unable to connect: Adaptive Server is unavailable or does not exist (severity 9)
Run Code Online (Sandbox Code Playgroud)

FreeTDS错误日志(尝试使用版本5.0和7.0,没有区别):

log.c:190:Starting log file for FreeTDS 0.82
        on 2014-04-08 13:40:40 with debug flags 0x4fff.
iconv.c:363:iconv to convert client-side data to the "ANSI_X3.4-1968" character set
iconv.c:516:tds_iconv_info_init: converting "US-ASCII"->"UCS-2LE" …
Run Code Online (Sandbox Code Playgroud)

sybase odbc pdo sqlanywhere freetds

6
推荐指数
1
解决办法
3255
查看次数

SQLAnywhere:Watcom SQL或T-SQL

一般性问题.我正在为Sybase SQL Anywhere 10开发.出于向后兼容性原因,几乎所有存储过程都是用Transact-SQL编写的.使用T-SQL而不是Watcom方言有什么优点或缺点吗?

sqlanywhere

5
推荐指数
1
解决办法
3450
查看次数

从Sybase SQL Anywhere 12迁移到MS SQL Server 2008的免费工具

我需要将数据从Sybase SQL Anywhere 12(我有一个*.db文件)恢复到MS SQL Server 2008中.

我安装了SQL Anywhere 12 Developer工具包,这使我能够运行数据库并安装了应该允许我这样做的ODBC驱动程序.我设法使用SQL Server导入/导出向导通过键入SQL语句导入单个表,导入所有数据功能已禁用.

由于我有一百个左右的表,我想找到一个工具来自动为我导入所有表.那里有免费的工具或脚本吗?

sqlanywhere database-migration sql-server-2008

5
推荐指数
1
解决办法
4078
查看次数

Sybase IN和OUT参数

我很疯狂Sybase JDBC驱动程序如何使用mixed INOUTparameters 处理存储过程.看看这个简单的存储过程:

CREATE OR REPLACE PROCEDURE p (IN i1 INT, OUT o1 INT, IN i2 INT, OUT o2 INT)
BEGIN
    set o1 = i1;
    set o2 = i2;
END
Run Code Online (Sandbox Code Playgroud)

以下是我用JDBC调用它的方法:

CallableStatement c = connection.prepareCall("{ call dba.p(?, ?, ?, ?) }");
c.setInt(1, 1);
c.setInt(3, 2);
c.registerOutParameter(2, Types.INTEGER);
c.registerOutParameter(4, Types.INTEGER);
c.execute();
System.out.println(c.getObject(2));
System.out.println(c.getObject(4));
Run Code Online (Sandbox Code Playgroud)

但这导致了

1
null
Run Code Online (Sandbox Code Playgroud)

这是怎么回事??这是JDBC驱动程序中的一个非常邪恶的错误还是我完全错过了什么?通过反复试验,我发现这是一种工作方式:

c.setInt(1, 1);
c.setInt(2, 2);
c.registerOutParameter(3, Types.INTEGER);
c.registerOutParameter(4, Types.INTEGER);
c.execute();
System.out.println(c.getObject(3));
System.out.println(c.getObject(4));
Run Code Online (Sandbox Code Playgroud)

现在的结果是

1
2
Run Code Online (Sandbox Code Playgroud)

JDBC驱动程序是否秘密重新排序INOUT参数?

我正在使用SQL …

stored-procedures jdbc sqlanywhere jconnect out-parameters

5
推荐指数
2
解决办法
1万
查看次数

实体框架代码首先和ironpython

是否可以将Entity Framework 6与代码第一模式一起使用,并在C#和IronPython中编写模型?

背景是,c#core中定义了一些标准模型,并且必须在IronPython中定义一些自定义模型.

编辑

定制模型在我们的定制生产系统中定义.应该加载模型并将其添加到DbContext应用程序启动时.每个模型都是一个IronPython文件/模块,将从数据库加载(与所有其他脚本一样).

不工作的样品

Program.cs中

using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IronPython_EF
{
    class Program
    {
        // Private Member
        private static SampleContext context;

        static void Main(string[] args)
        {
            // Setup EntityFramework
            context = new SampleContext();

            // Create IronPython
            var setup = Python.CreateRuntimeSetup(null);
            var runtime = new ScriptRuntime(setup);
            var engine = runtime.GetEngine("IronPython");
            var scriptScope = engine.CreateScope();

            // Set global var
            scriptScope.SetVariable("DBContext", context);

            // Load Model
            ScriptSource modelSource …
Run Code Online (Sandbox Code Playgroud)

c# ironpython entity-framework dynamic-language-runtime sqlanywhere

5
推荐指数
1
解决办法
957
查看次数

sqlanydb windows 无法加载 dbcapi

我正在尝试通过 python 连接到 SQL Anywhere 数据库。我已经创建了 DSN,并且可以使用命令提示符连接到数据库dbisql - c "DNS=myDSN"。当我尝试使用 python 连接时,con = sqlanydb.connect(DSN= "myDSN") 我得到

`Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    con = sqlanydb.connect(DSN= "RPS Integration")
  File "C:\Python27\lib\site-packages\sqlanydb.py", line 522, in connect
    return Connection(args, kwargs)
  File "C:\Python27\lib\site-packages\sqlanydb.py", line 538, in __init__
    parent = Connection.cls_parent = Root("PYTHON")
  File "C:\Python27\lib\site-packages\sqlanydb.py", line 464, in __init__
    'libdbcapi_r.dylib')
  File "C:\Python27\lib\site-packages\sqlanydb.py", line 456, in load_library
    raise InterfaceError("Could not load dbcapi.  Tried: " + ','.join(map(str, names)))
InterfaceError: (u'Could …
Run Code Online (Sandbox Code Playgroud)

python sqlanywhere sqlanydb

5
推荐指数
1
解决办法
6533
查看次数

我可以从列 CHECK 约束调用用户定义的函数吗?

我有一个返回 1 或 0 的用户定义的 SQL 函数,我想从列 CHECK 约束中调用它。

sql sqlanywhere

4
推荐指数
1
解决办法
5995
查看次数

SSIS 错误:“ODBC 源”验证失败并返回验证状态“VS_NEEDSNEWMETADATA”

我有一个 SSIS 项目,去年我没有遇到任何问题。目前,我可以从 Visual Studio 2019 中执行未更改的包,并将其作为 SSMS 中的 SQL 代理作业,不会出现任何问题。

但是,如果我在数据任务中打开数据流 ODBC 源,系统会提示我更新输出列上的元数据。无论我选择“是”还是“否”并且不对包进行其他更改,我都会在执行时收到以下错误:

“ODBC Source”验证失败并返回验证状态“VS_NEEDSNEWMETADATA”。

我认为可能导致此错误的唯一更改是我在服务器上从 Visual Studio 2017 更新到 Visual Studio 2019。我在本地计算机上使用 VS 2019,它也有同样的问题。

ODBC 源使用 SQL Anywhere 17 32 位驱动程序。

我已尝试以下操作并在执行时继续收到错误:

  • 重新创建了数据流任务、ODBC 连接管理器和包。
  • 使用 DTEXEC /FILE 运行包。
  • 在 ODBC 源上将 ValidateExternalMetadata 设置为 False
  • 确认数据源上的外部列和输出列具有相同的数据类型

编辑:我在 VS 2017 中创建了一个具有相同数据流任务的新项目。我可以运行并编辑 ODBC 源,在执行时不会出现任何元数据错误。我在 VS 2019 中打开该项目,一打开 ODBC 源,就提示我更新元数据。然后在执行时,我收到“VS_NEEDSNEWMETADATA”错误。有什么想法可以在 VS 2019 中纠正这个问题吗?

sql-server odbc ssis etl sqlanywhere

4
推荐指数
1
解决办法
1万
查看次数