我在32位Windows 2008服务器中创建了一个在.NET 3.5中开发的Windows应用程序.在64位服务器中部署应用程序时,它显示错误"Microsoft.Jet.OLEDB.4.0'提供程序未在本地计算机上注册".
因此,作为此问题的解决方案,我已将项目的构建属性更改为X86,以便它将以32位模式构建,并在32位机器中重建项目.但是,同一个项目使用其他数据库驱动程序(DB2,SQL等)连接到其他数据库.因此,当我在64位操作系统中再次部署我的应用程序时,它会抛出异常"尝试在32位平台上加载64位程序集".
我使用Microsoft.Jet.OLEDB.4.0驱动程序读取和写入Excel(.xls)
我正在阅读有关pivotcache的MS Excel帮助文章,并想知道OLE DB和ODBC源的含义
...您应该使用CommandText属性而不是SQL属性,该属性现在主要用于与早期版本的Microsoft Excel兼容.如果同时使用这两个属性,则CommandText属性的值优先.
对于OLE DB源,CommandType属性描述CommandText属性的值.
对于ODBC源,CommandText属性的功能与SQL属性完全相同,设置属性会导致数据刷新...
我非常感谢你的简短回答.
我有64位Windows 7和SQLServer 2008 R2(64位)
我按照这里的说明将excel文件导入sql server,但在我尝试访问excel文件的那篇文章的图3部分中,当我点击下一步时,这个错误让我停下来:
The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine
Run Code Online (Sandbox Code Playgroud)
我在网上搜索我知道我必须安装AccessDatabaseEngine_x64.但是当我安装它时,我遇到了同样的问题
你能帮帮我怎么办?
我正在使用OleDb从包含许多工作表的excel工作簿中读取.
我需要阅读工作表名称,但我需要按照电子表格中定义的顺序进行操作; 所以如果我有一个看起来像这样的文件;
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
|_____|_____|____|____|____|____|____|____|____|
\__GERMANY__/\__UK__/\__IRELAND__/
Run Code Online (Sandbox Code Playgroud)
然后我需要得到字典
1="GERMANY",
2="UK",
3="IRELAND"
Run Code Online (Sandbox Code Playgroud)
我尝试过使用OleDbConnection.GetOleDbSchemaTable(),这给了我名单,但按字母顺序对它们进行排序.字母排序意味着我不知道特定名称对应于哪个表格编号.所以我得到了;
GERMANY, IRELAND, UK
Run Code Online (Sandbox Code Playgroud)
这改变了UK和的顺序IRELAND.
我需要对它进行排序的原因是我必须让用户按名称或索引选择一系列数据; 他们可以要求"从德国到爱尔兰的所有数据"或"从表1到表3的数据".
任何想法将不胜感激.
如果我可以使用办公室互操作课程,这将是直截了当的.不幸的是,我不能,因为互操作类在非交互式环境(如Windows服务和ASP.NET站点)中不能可靠地工作,所以我需要使用OLEDB.
当我尝试通过MSSQL Server数据导入连接到任何Excel时出现此错误,即SSIS包"Microsoft.ACE.OLEDB.16.0"提供程序未在本地计算机上注册.(System.Data)它不是相同的版本我认为需要其他修补
我有一个带有两个项目的Visual Studio 2008解决方案(一个Word-Template项目和一个用于测试的VB.Net控制台应用程序).这两个项目都引用一个数据库项目,该项目打开与MS-Access 2007数据库文件的连接,并引用System.Data.OleDb.在数据库项目中,我有一个函数,它按如下方式检索数据表
private class AdminDatabase
' stores the connection string which is set in the New() method
dim strAdminConnection as string
public sub New()
...
adminName = dlgopen.FileName
conAdminDB = New OleDbConnection
conAdminDB.ConnectionString = "Data Source='" + adminName + "';" + _
"Provider=Microsoft.ACE.OLEDB.12.0"
' store the connection string in strAdminConnection
strAdminConnection = conAdminDB.ConnectionString.ToString()
My.Settings.SetUserOverride("AdminConnectionString", strAdminConnection)
...
End Sub
' retrieves data from the database
Public Function getDataTable(ByVal sqlStatement As String) As DataTable
Dim ds As New DataSet
Dim …Run Code Online (Sandbox Code Playgroud) 我知道有不同的方法来读取Excel文件:
IteropOledbOpen Xml SDK兼容性不是问题,因为程序将在受控环境中执行.
我的要求:
将文件读取到DataTable/ CUstom Entities(我不知道如何为对象创建动态属性/字段[列名将在Excel文件中变化])
用于DataTable/Custom Entities使用其数据执行某些操作.
更新DataTable操作结果
把它写回去excel file.
哪个更简单.
如果可能的话,请告诉我自定义实体(动态地向对象添加属性/字段)
我有一个Excel工作表我想读入数据表 - 除了Excel表格中的一个特定列之外,一切都很好.列,"产品ID",就像是值的组合##########和n#########.
我试图让OleDB通过将其读入数据集/数据表来自动处理所有内容,但"ProductID"中的任何值都会n######丢失,忽略并留空.我尝试通过使用datareader循环遍历每一行来手动创建我的DataTable,但结果完全相同.
这是代码:
// add the column names manually to the datatable as column_1, column_2, ...
for (colnum = 0; colnum < num_columns; colnum ++){
ds.Tables["products"].Columns.Add("column_" +colnum , System.Type.GetType("System.String"));
}
while(myDataReader.Read()){
// loop through each excel row adding a new respective datarow to my datatable
DataRow a_row = ds.Tables["products"].NewRow();
for (col = 0; col < num_columns; col ++){
try { a_row[col] = rdr.GetString(col); }
catch { a_row[col] = …Run Code Online (Sandbox Code Playgroud) 出于调试目的,我想知道快速测试OLE DB连接字符串的方法.
我找到了这个免费软件,它可以在我的机器上运行,测试成功.
有没有更快的方法,可能从Windows上的命令行?因为大部分时间,客户而不是我都会执行此任务,所以我更喜欢"零安装"方法,这种方法会影响他们的系统.
adodb和之间有什么区别oledb?
这两者之间有什么关系?
哪里ado.net在上下文看台adodb和oledb?
oledb ×10
excel ×5
c# ×3
.net ×2
ado.net ×2
32bit-64bit ×1
aceoledb ×1
adodb ×1
dataset ×1
datatable ×1
jet ×1
ms-access ×1
odbc ×1
openxml-sdk ×1
server-side ×1
sql-server ×1
ssis ×1