标签: odbc

在C#中列出ODBC数据源

我正在寻找一种适当的抽象方法来从C#中获取系统中的ODBC数据源列表.我已经尝试了"在注册表中寻找"技巧,我发现它在英语中运行良好:

        RegistryKey reg = (Registry.CurrentUser).OpenSubKey("Software");
        reg = reg.OpenSubKey("ODBC");
        reg = reg.OpenSubKey("ODBC.INI");
        reg = reg.OpenSubKey("ODBC Data Sources");

        and then, of course, iterating over reg.GetValueNames()
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我在至少一台西班牙语机器上发现他们的注册表键是西班牙语,所以显然违反这种抽象(如果存在)已经让我陷入困境.

是否有库函数来执行此操作?

c# odbc

11
推荐指数
3
解决办法
2万
查看次数

ODBC更改时如何刷新Access mdb中的链接表

我可以创建一个Access mdb并通过ODBC将链接表添加到Sql Server数据库.如果我使用ODBC控制面板小程序更改ODBC连接的Sql Server,则mdb仍会连接到原始Sql Server,直到重新启动Access.

有没有办法重新链接这些链接的服务器表而不重新启动Access?

编辑:我想在代码中这样做

ms-access odbc

11
推荐指数
2
解决办法
10万
查看次数

奇怪的Oracle错误:标识符太长ORA-00972

使用ORACLE 10g时遇到了这个问题.我在这里阅读了这个问题的答案(ora-00972标识符太长了oracle 10g)堆栈溢出但它们没有为我工作.也许我的情况有所不同.

现在我有这些表名:WIMAX_TRAFFIC_STATSWIMAX_RADIO_STATS.当我尝试通过ODBC连接将数据插入到它们时Erlang/OTP,我得到了错误:

{error,"[DataDirect][ODBC Oracle Wire Protocol driver][Oracle]ORA-00972: 
identifier is toolong SQLSTATE IS: HY000"}
所以,我搜索谷歌并找到答案说,也许我的表名太长了.所以我在下面做了这个并再次尝试:
SQL> ALTER TABLE WIMAX_RADIO_STATS RENAME TO WR;
Table altered.
SQL> ALTER TABLE WIMAX_TRAFFIC_STATS RENAME TO WT;
Table altered.
我仍然得到同样的错误.其他来源sya,它可能是我在我的一些专栏中写的数据.我的表定义如下:


SQL> DESCRIBE WT;
 Name                                      Null?    Type
 ----------------------------------------- -------- -----------------
 SDATE                                              DATE
 ELEMENT_TYPE                                       VARCHAR2(50)
 MANAGED_ELEMENT                                    VARCHAR2(50)
 USER_LABEL                                         VARCHAR2(200)
 JOB_ID                                             VARCHAR2(50)
 MEAS_TYPE                                          VARCHAR2(50)
 MEAS_VALUE                                         VARCHAR2(50)

我在那里写的数据值都不比列长度定义长.我真的好奇.我试图在表中编写长度小于10个字符但仍然出现此错误的字符串.请帮助一些身体!

EDIT

SAMPLE查询请求如下:

INSERT INTO WT(element_type,managed_element,user_label,job_id,meas_type,
meas_value) VALUES("BreezeMAX MBS",
"SubNetwork=ASN,MeContext=,ManagedElement=MBS.172.17.9.9",
"BMAX-Shoal2[MTN-Egate]",
"99297","rbMngmntPortPacketsDiscardedOnRx","0"); …

sql oracle erlang odbc

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

诀窍重置odbc_error()

我已经知道,odbc_execute()当它返回时并不总是触发正确的ODBC错误FALSE(至少不是Oracle驱动程序),我无法完全信任odbc_error()odbc_errormsg().当没有先前的错误因为odbc_error()返回空字符串时,很容易检测到这种情况.但是,当它返回一些东西时,我不知道它是否属于最后一次失败的操作,或者它是前一个错误的遗留物.

最简单的解决办法是重置odbc_error()odbc_errormsg()函数时有一个错误,以便下一次调用将从头开始,但我无法找到一个支持的方式这样做.你能找到办法吗?

背景:我正在使用封装数据库调用的类来增强遗留应用程序.这就是为什么我需要尽可能地使一切都变得通用.

php odbc

11
推荐指数
1
解决办法
1546
查看次数

PHP ODBC connect()到Access - 架构不匹配

我现在用Google搜索了几个小时.

我读过无数文章,例如:Access是否有Windows 7 ODBC驱动程序?

我尝试过使用ODBC管理员 - 并且已成功为两者添加系统DSN:

  • Microsoft Access数据库
  • 微软做Access数据库

当我尝试连接到本地存储的Access DB时:

odbc_connect('Aquarius2', '', '');
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

odbc_connect():SQL错误:[Microsoft] [ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的体系结构不匹配,第3行的C:\ export\export.php中的SQLConnect中的SQL状态IM014

简单脚本尝试安装最新的访问驱动程序 - Aquarius2我的DSN名称仍然失败.

我没有想法 - 我错过了什么?

问候,亚历克斯

php ms-access odbc

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

在Unix上测试ODBC条目

有没有人知道如果正确配置odbc.ini文件上的odbc条目的方法?

我想知道我的linux服务器是否能够使用我配置的ODBC条目连接到我的SQL Server.

unix linux odbc

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

如何将Elixir二进制转换为字符串?

所以我试图将二进制文件转换为字符串.这段代码:

t = [{<<71,0,69,0,84,0>>}]
String.from_char_list(t)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试这种转换时,我得到了这个:

** (ArgumentError) argument error
    (stdlib) :unicode.characters_to_binary([{<<70, 0, 73, 0, 78, 0>>}])
    (elixir) lib/string.ex:1161: String.from_char_list/1
Run Code Online (Sandbox Code Playgroud)

我假设<< 70,0等可能是一个字形列表(它是API调用的返回,并且API没有完全记录)但我是否需要以某种方式指定编码?

我知道我可能会遗漏一些明显的东西(也许这不是正确的功能?)但我似乎无法弄清楚该怎么做.


编辑:

对于它的价值,上面的二进制文件是Erlang ODBC调用的返回值.经过一番挖掘后,我发现有问题的二进制文件实际上是"编码为UTF16小端的Unicode二进制文件"(参见此处:http://www.erlang.org/doc/apps/odbc/odbc.pdf第9页) re:SQL_WVARCHAR)并没有真正改变问题,但它确实添加了一些上下文.

unicode erlang odbc elixir

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

ODBC连接到Excel错误

我有一个ODBC连接的问题,该连接应该连接到Excel表并用它做一些事情.我已经在网上看了很多关于它的东西,但没有一个解决方案帮助了我(包括stackoverflow).

所以基本上我正处于试图打开表连接的地步.

private static SortedList<string, School> generateSchoolListExcel(string listFilePath)
{
    StringBuilder con = new StringBuilder();

    OdbcConnectionStringBuilder.AppendKeyValuePair(con, "Data Source", listFilePath);
    OdbcConnectionStringBuilder.AppendKeyValuePair(con, "HDR", "yes");
    OdbcConnectionStringBuilder.AppendKeyValuePair(con, "Format", "xlsx");
    OdbcConnectionStringBuilder.AppendKeyValuePair(con, "Driver", "{Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}");
   //I have tried to specify driver without parentheses {} but it's still the same

    List<School> schoolList = new List<School>();

    using (OdbcConnection excel = new OdbcConnection(con.ToString()))
    {
        excel.Open();
        //doing actuall stuff
    }

        return schoolList;
}
Run Code Online (Sandbox Code Playgroud)

当我调用该excel.Open()方法时,我收到OdbcException消息:

错误[IM002] [Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序",这很奇怪,因为我在名为con的字符串中指定了那些.

还值得一提的是,在ODBC数据源管理器中,我可以清楚地看到我已经安装并运行了这些驱动程序.

还有一个奇怪的部分.当我调用我在stackoverflow上找到的以下方法时,它返回以下驱动程序列表:

  • "驱动程序da Microsoft para …

.net c# excel odbc

11
推荐指数
1
解决办法
1995
查看次数

如何在CentOS 7上安装PHP PDO ODBC驱动程序?

我已经在CentOS 7 VPS中安装了PHP 5.4.我现在正在尝试使用PHP脚本访问.mdb格式的旧数据库.

然而,我的phpinfo()页说,只有mysqlsqlitePDO驱动程序启用.没有启用名为ODBC的驱动程序.

这就是为什么我试图按照教程来实现它的原因.但它不起作用.bash: ./configure: No such file or directory.

我不知道从哪个文件夹运行那里列出的命令.是否有一个命令允许我从系统安装PDO ODBC驱动程序,例如yum -y install php_odbc哪个更容易让我使用?如果没有,我做错了什么?

php odbc pdo

11
推荐指数
1
解决办法
6078
查看次数

[S1000] [unixODBC] [FreeTDS] [SQL Server]无法连接到数据源

我知道这个问题被多次询问,但我已经尝试了所有但没有任何效果.我试图连接到与Ubuntu 14.04不同的服务器上的MSSQL数据库.

来自/etc/odbcinst.in的内容

 [ODBC]
 Trace = No
 TraceFile = /tmp/odbc.log

 [FreeTDS]
 Description = FreeTDS
 Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
 Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
 UsageCount = 1
 fileusage=1
 dontdlclose=1
Run Code Online (Sandbox Code Playgroud)

来自/etc/odbc.in的内容

 [mssql]
 Driver = FreeTDS
 ServerName = mssql
 Port = 1433
 Database = My Database //database has space
 Driver=/usr/local/lib/libtdsodbc.so
 UsageCount = 1
 TDS_Version = 7.3
  instance = SQLEXPRESS

[Default]
Driver=/usr/local/lib/libtdsodbc.so
Run Code Online (Sandbox Code Playgroud)

和/etc/freetds/freetds.conf中的mssql部分

[mssql]

 host = server ip
 port = 1433
  database = My Databas
 instance = SQLEXPRESS

  tds version = 7.3
  client charset = UTF-8
Run Code Online (Sandbox Code Playgroud)

当我运行以下命令时,它会生成增加的数字 …

sql-server odbc freetds

11
推荐指数
1
解决办法
3358
查看次数

标签 统计

odbc ×10

php ×3

c# ×2

erlang ×2

ms-access ×2

.net ×1

elixir ×1

excel ×1

freetds ×1

linux ×1

oracle ×1

pdo ×1

sql ×1

sql-server ×1

unicode ×1

unix ×1