使用c-调用yashandb odbc驱动执行SQL时报YAS-08008 not all variables bounded

首页    知识库    常见问题    使用c-调用yashandb odbc驱动执行SQL时报YAS-08008 not all variables bounded

问题现象

某客户的应用(c# asp.net)在运行时报如下异常:

image2024-8-14_17-52-34

 

问题的风险及影响

客户的应用无法正常运行

 

问题影响的版本

所有的yashandb版本,所有的yashandb odbc驱动版本

 

问题发生原因

目前yashandb的odbc驱动不支持.net框架使用绑定变量执行SQL语句

 

解决方法及规避方式

不使用绑定变量,或者升级yashandb odbc驱动版本

 

问题分析和处理过程

使用如下c#代码可以重现问题,代码中t表的ddl定义如下:create table t(tid number);:

static void Main(string[] args)

{

    string connectionString = "Driver=YashanDB;Server=192.168.24.49;Port=1688;Uid=user;Pwd=pwd;";

    try

    {

        using (OdbcConnection connection = new OdbcConnection(connectionString))

        {

            // 打开数据库连接

            connection.Open();

 

            // 创建一个 SQL 查询

            string query = "SELECT * FROM t where tid = :tid";

 

            // 使用 OdbcCommand 来执行 SQL 查询

            using (OdbcCommand command = new OdbcCommand(query, connection))

            {

                command.Parameters.AddWithValue("tid", 1);

                // 使用 OdbcDataReader 来获取查询结果

                using (OdbcDataReader reader = command.ExecuteReader())

                {

                    while (reader.Read())

                    {

                        Console.WriteLine($"ID: {reader["Id"]}, Name: {reader["Name"]}");

                    }

                }

            }

            // 关闭连接

            connection.Close();

        }

    }

    catch (OdbcException ex)

    {

        Console.WriteLine("Error: " + ex.Message);

    }

}

上面的c#代码在执行时会在控制台打印异常:Error: ERROR [HY000] [YashanDB][ODBC Driver][Yas]YAS-08008 not all variables bounded

 

经验总结

最小化问题场景,复现问题。

 

浏览量:0