我有一个Perl脚本通过DBI模块与现有数据库(数据库类型未知)连接,我想在WinXP上的python 2.6中访问它.
Perl代码是:
use DBI;
my $DSN = "DBI:Proxy:hostname=some.dot.com;port=12345;dsn=DBI:XXXX:ZZZZZ";
my $dbh = DBI->connect($DSN);
Run Code Online (Sandbox Code Playgroud)
这可以转换为python等价物吗?
下面是一个例子(是否有可用的pywin32 odbc连接器文档?),我将以下内容放在一起:
import odbc
DSN = "DBI:Proxy:hostname=some.dot.com;port=12345;dsn=DBI:XXXX:ZZZZZ"
db = odbc.odbc(DSN)
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
dbi.operation-error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified in LOGIN
Run Code Online (Sandbox Code Playgroud)
UPDATE
看来另一个Perl模块DBD :: Proxy正在为处理实际查询的Perl DBI :: ProxyServer(服务器端)实现提供实际接口.
python可以用于与基于Perl的DBI :: ProxyServer接口吗?
我在oracle中创建了一个连接字符串,如:
Data Source=hostname;Initial Catalog=IMPORT_UTILITY;User ID=abc;password=123
Run Code Online (Sandbox Code Playgroud)
我想为oracle做同样的事情.我正在使用ODBC.
任何人都可以告诉我什么是oracle的连接字符串将使用odbc等同于上面的sql连接字符串?
我在下面有这个VBA,旨在遍历每个WS并插入每个数据集的前4行.
这在with内部工作正常,但只允许我指定一个工作表,而不是全部通过它们.我把它带出来并得到"无效或不合格的参考".在此之后我添加了ActiveSheet.到'细胞'方法.
现在我收到以下错误:
"ODBC驱动程序不支持所请求的属性"
我如何才能获得.Cells资格?还是有替代方案吗?我正在使用excel 2010和mysql.
Public Function InsertData()
Dim rs As ADODB.Recordset
Dim oConn As ADODB.Connection
Dim WS As Worksheet
Dim strsql As String
Set rs = New ADODB.Recordset
Set oConn = New ADODB.Connection
oConn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _
"SERVER=server.host.com;" & _
"DATABASE=datatime;" & _
"USER=boulders;" & _
"PASSWORD=rocks;" & _
"Option=3"
For Each WS In ActiveWorkbook.Worksheets
For rowcursor = 4 To 8
strsql = "INSERT INTO workflow_metrics (id, code) " & _
"VALUES (" & (ActiveSheet.Cells(rowcursor, …Run Code Online (Sandbox Code Playgroud) 我的客户有一个使用Advantage数据库的应用程序.我在尝试使用ODBC或PHP连接器尝试连接到它时遇到问题它得到了这个发现6420错误,这似乎很常见.
我认为大部分问题是我对Advantage数据库的理解不足.我在想问题可能是没有服务器正在运行?该应用程序可能有自己的服务器吗?我编写了一个小的C#程序,它连接到数据字典并且读得很好,但是它将它Advantage.data.provider用于C#.这就像服务器吗?
所以我想底线是:有没有办法连接到这个数据字典/ Advantage数据库,所以我可以用PHP访问?(最好不要买东西)
谢谢你的帮助.
我有一个简单的测试Windows窗体应用程序.我第一次在VS中运行它一切正常.如果我再次立即运行它会在adapter.fill(ds)上抛出有关读保护内存的异常; 线.如果我等待5分钟左右,应用程序将再次运行.我想从stackoverflow社区获得一些关于我被愚弄的建议.我想这是一些连接超时.代码如下:
C#
public void Button1_Click(object sender, EventArgs e)
{
string connectionString = @"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=x:\CMSBak\ISP;";
var conn = new OdbcConnection(connectionString);
conn.Open(); // Open the connection
string strQuery = "SELECT * FROM ISPINMAS";
var adapter = new OdbcDataAdapter(strQuery, conn);
var ds = new DataSet();
try
{
adapter.Fill(ds);
}
catch (Exception)
{
conn.Close();
throw;
}
DataTable dt = ds.Tables[0];
dataGridView1.DataSource = dt.DefaultView;
conn.Close(); // That's it, now close the connection
}
Run Code Online (Sandbox Code Playgroud) 我使用odbc适配器和数据集连接并从IBM的I Series AS400数据库接收数据.
我有一个odbc连接,如下所示:
OdbcCommand cmd = new OdbcCommand(queryString, conn); // Set Active Query
OdbcDataAdapter rt = new OdbcDataAdapter(queryString, conn); // Active Data Transfer
DataSet ds = new DataSet(); // Create DataSet
rt.SelectCommand.CommandTimeout = 180; // Set Command Timeout
rt.Fill(ds); // Transfer All Data
var reader = ds.CreateDataReader(); // Create Reader
reader.Read(); // Read
while (reader.Read()) { ... }
Run Code Online (Sandbox Code Playgroud)
它奇怪地给了System.OutOfMemoryException网上rt.Fill(ds);
如果有10亿行,包含130列会导致此错误吗?
如何避免此错误并收到我想要的数据?
我正在使用MySQL for Excel加载项.几个月来我一直在使用它来突出显示一组数据并将其加载到我的数据库中.
我上周添加了一个新表,并使用相同的方法成功地将数据加载到它中.它停止了工作.当我尝试附加数据时,我得到一个错误对话框,上面写着"找不到列30"......这恰好是我表中的数字(因此也是最后一列).
更多信息: - 如果我突出显示同一组数据并尝试将其写入另一个表,它将允许我(即使我不确认并执行此操作).我通过错误对话框到映射对话框. - 我尝试将上一个表中的数据写入此新问题表.我得到了相同的错误对话框.这告诉我问题不在于数据集.它与桌子.
然后我删除了表,所有连接并从头开始重新编写.仍然是同样的问题.
这在哪里失败了?谢谢.
我正在开发一个应用程序,使用ODBC从FileMaker pro中提取数据,我现在成功地从特定表中获取数据
try
{
conn = new OdbcConnection("DSN=FileMaker;Uid=Admin;Pwd=******");
conn.Open();
cmd = new OdbcCommand("SELECT * FROM SimpleProductTest");
cmd.Connection = conn;
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if ((dr != null) && (dr.HasRows))
{
while (dr.Read())
{
temp = dr.GetString(0);
Console.WriteLine(temp);
}
}
Console.WriteLine("Done.");
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
现在我想在FileMaker Pro中列出所有数据库名称和表名.根据他们的文档(http://www.filemaker.com/help/12/fmp/html/func_ref1.31.31.html),函数DatabaseNames似乎是正确的.
try
{
conn = new OdbcConnection("DSN=FileMaker;Uid=Admin;Pwd=******");
conn.Open();
cmd = new OdbcCommand("DatabaseNames");
cmd.Connection = conn;
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if ((dr != null) && (dr.HasRows))
{
while (dr.Read())
{
temp = dr.GetString(0);
Console.WriteLine(temp);
}
}
Console.WriteLine("Done.");
Console.ReadLine(); …Run Code Online (Sandbox Code Playgroud) 这让我很难过.我从i-net Clear Reports中复制并粘贴了一条SQL语句,并将其粘贴到Windows编辑器中,该编辑器正在编辑Ubuntu .sql文件,该文件只是一个文本文件.我已经连接到另一个MS SQL 2005服务器,没有问题通过isql和Perl.所以我遇到了一个带有大约10个连接的大型SQL语句的问题,并将语句简化为以下多行:
SELECT PKG.SO_ID
FROM
PACKAGES AS PKG
WHERE
PKG.tracking_no = '640038823199'
;
Run Code Online (Sandbox Code Playgroud)
此文件由多行带有unix行结尾组成.我的isql命令是:cat test1.sql | isql dsnname 'domain\username' password -v -b.
我使用-b作为批处理模式,因为我通过文件向isql发送输入.错误在第一行立即开始,但我仔细检查了语法,对于SQL Server 2005,'AS'在'PACKAGES AS PKG'中是可选的.
[37000][unixODBC][FreeTDS][SQL Server]Statement(s) could not be prepared.
[37000][unixODBC][FreeTDS][SQL Server]The multi-part identifier "PKG.SO_ID" could not be bound.
[ISQL]ERROR: Could not SQLExecute
[37000][unixODBC][FreeTDS][SQL Server]Incorrect syntax near the keyword 'FROM'.
[37000][unixODBC][FreeTDS][SQL Server]Statement(s) could not be …Run Code Online (Sandbox Code Playgroud) 我在我的窗口表单应用程序中使用my_database.accdb作为数据库...我想在我的客户端计算机上安装它而不安装ms office.How我能实现这一点.我在我的c#应用程序中使用OleDb作为连接器.