标签: oledb

无法从链接服务器“LinkedServerName”的 OLE DB 提供程序“ProviderName”获取行数据

当我尝试执行涉及 Oracle 链接服务器的查询时,我遇到了这个问题。找到下面的查询,

SELECT DISTINCT Convert(nvarchar(100),A.ZIP_CD)
               ,Convert(nvarchar(100),A.CITY)
               ,Convert(nvarchar(100),A.ST_CD)
               ,Convert(nvarchar(100),E.PCT)
               ,Convert(nvarchar(100),B.DEFAULT_DEL_CHG)
               ,Convert(nvarchar(100),E.DEL_TAX)

FROM [LIVE]..[CUSTOM].MASTER_ZIP A,
     [LIVE]..[MISC].ZONE B,
     [LIVE]..[MISC].ZIP2ZONE C,
     [LIVE]..[MISC].ZIP2TAX D,
     [LIVE]..[SALES].TAT E
WHERE A.ZIP_CD = C.ZIP_CD
AND ISNULL(B.DEFAULT_DEL_CHG,0) <> 0
AND A.USPS_PRIM = 'P'
AND C.ZONE_CD = B.ZONE_CD
AND A.ZIP_CD = D.ZIP_CD
--AND decode(D.TAX_CD,'999','99',d.tax_cd) = E.TAT_CD
AND (Case When D.TAX_CD = '999' Then '99' Else D.TAX_CD End) = E.TAT_CD
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误,

无法从链接服务器“LIVE”的 OLE DB 提供程序“OraOLEDB.Oracle”获取行数据。

我在一个论坛上发现,由于 Oracle 在 sql server 中转换数字时出现问题,请尝试转换为 nvarchar,但我仍然遇到相同的错误。

关于如何解决这个问题有什么想法吗?谢谢。

oracle oledb linked-server

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

如何解决 OleDb 错误“FROM 子句中的语法错误”?

目前我正在尝试使用此功能导入 CSV 文件:

    public DataSet ImportCommaSeparatedValueFileToDataSet(string SourceFile)
    {
        var dsImportCSVtoDataSetReturn = new DataSet();

        using (var objAdapter1 = new OleDbDataAdapter())
        {
            String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + SourceFile.Substring(0, SourceFile.LastIndexOf(@"\")) + ";Extended Properties='text;HDR=Yes;FMT=Delimited'";
            var objConnection = new OleDbConnection(sConnectionString);
            objConnection.Open();
            var objCmdSelect = new OleDbCommand("SELECT * FROM " + SourceFile, objConnection);

            objAdapter1.SelectCommand = objCmdSelect;
            objAdapter1.Fill(dsImportCSVtoDataSetReturn);
            objConnection.Close();
        }

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

当我尝试导入文件名中没有空格的文件时,它工作正常。当我尝试导入以下文件时:

D:\Workspace\WoldCard export.csv
Run Code Online (Sandbox Code Playgroud)

然后我收到以下异常:

excException = {"Syntax error in FROM clause."}

Source = "Microsoft JET Database Engine"

StackTrace  "   at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)\r\n   at …
Run Code Online (Sandbox Code Playgroud)

c# sql oledb

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

C# DataTable更新Access数据库

如何将 a 保存DataTable到文件中。accdb (Access) 现有一个吗?我使用了以下代码,但它不起作用:

using (OleDbConnection oledbConnection = new OleDbConnection(connection))
{
   oledbConnection.Open();
   string query = "SELECT * FROM Student";
   using (OleDbCommand oledbCommand = new OleDbCommand(query, oledbConnection))
   {
      using (OleDbDataAdapter oledbDataAdapter = new OleDbDataAdapter(oledbCommand))
      {
         using (OleDbCommandBuilder oledbCommandBuilder = new OleDbCommandBuilder(oledbDataAdapter))
         {
            oledbDataAdapter.DeleteCommand = oledbCommandBuilder.GetDeleteCommand(true);
            oledbDataAdapter.InsertCommand = oledbCommandBuilder.GetInsertCommand(true);
            oledbDataAdapter.UpdateCommand = oledbCommandBuilder.GetUpdateCommand(true);
            oledbDataAdapter.Update(dataTable);
         }
      }
   }
   oledbConnection.Close();
}
Run Code Online (Sandbox Code Playgroud)

变量 dataTable 使用文件的原始内容进行初始化,然后通过添加一行进行修改,现在我必须更新数据库中的表。

我尝试使用以下代码,但这不起作用:(

OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Student", connection);
OleDbCommandBuilder cmdBuilder = new OleDbCommandBuilder(da);
da.InsertCommand = cmdBuilder.GetInsertCommand(true); …
Run Code Online (Sandbox Code Playgroud)

c# database oledb datatable ms-access

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

为什么当我调用 DataAdapter.Update() 时,此 C# 代码会生成语法错误?

我正在尝试将新行添加到 C# 中现有的 MS Access 数据库表中。但是,当我调用 DataAdapter\xe2\x80\x99s Update 方法时,我在 INSERT INTO 语句\xe2\x80\x9d 中收到 \xe2\x80\x9c 语法错误。我的代码是:

\n\n
try\n{\n    // Open the database \n    OleDbCommand mySelectCommand = new OleDbCommand(strAccessSelect, myAccessConn);\n    OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(mySelectCommand);\n    OleDbCommandBuilder myCommandBuilder = new OleDbCommandBuilder(myDataAdapter);\n    myAccessConn.Open();\n\n    // Get Analogue table\n    int rowCount = myDataAdapter.Fill(myDataSet, "Analogue");\n    Console.WriteLine("Row Count: " + rowCount);\n    DataTable analogues = myDataSet.Tables["Analogue"];\n    analogues.PrimaryKey = new DataColumn[] { analogues.Columns["Name"] };\n\n    // Create a new row.\n    System.Data.DataRow newRow;\n    newRow = analogues.NewRow();\n    newRow["Name"] = "My new row";\n    newRow["Area"] …
Run Code Online (Sandbox Code Playgroud)

c# sql oledb syntax-error

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

如何在 SSIS 导入期间处理唯一标识符值

我正在尝试将带有唯一标识符列的 Excel 文件导入 SQL Server,但 SSIS 给我带来了很多麻烦。

我可以将 excel 中的唯一标识符值获取到 OLE DB 目标组件中,但无法将它们放入 SQL Server 表中。

我在尝试插入唯一标识符时收到以下错误消息。

注意:目标 SQL Server 表中的 CreatedBy 列的类型为 uniqueidentifier。

OLE DB Destination.Inputs[OLE DB 目标输入] 上的 OLE DB Destination.Inputs[OLE DB 目标输入].Columns[CreatedBy] 存在错误。返回的列状态为:“由于可能丢失数据,无法转换该值。”。

oledb ssis uniqueidentifier

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

在c#中使用oledb更新数据

我使用 c# 和数据库使用 access accdb 创建了一个项目,并将它们连接起来。我制作了 2 个按钮,第一个用于添加新客户,效果完美,第二个用于更新客户的数据(名字和姓氏),由于某种原因,更新按钮不起作用,当我运行该项目,但单击后没有任何反应......

private void button2_Click(object sender, EventArgs e)
{
    connect.Open();
    string cid = textBox1.Text;
    string cfname = textBox2.Text;
    string clname = textBox3.Text;
    OleDbCommand command = new OleDbCommand();
    command.Connection = connect;
    command.CommandText = "UPDATE Tcostumers SET cfname= " + cfname + "clname= " + clname + " WHERE cid = " + cid;
    if (connect.State == ConnectionState.Open)
    {
        try
        {
            command.ExecuteNonQuery();
            MessageBox.Show("DATA UPDATED");
            connect.Close();
        }
        catch (Exception expe)
        {
            MessageBox.Show(expe.Source);
            connect.Close();
        }
    }
    else
    { …
Run Code Online (Sandbox Code Playgroud)

c# oledb ms-access

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

Mac 中 Excel 工作表的 Sql 查询

我已经通过 oledb 连接在 Windows pc 上的 Excel 2016 中编写了一个宏。但它在我的 Mac 中不起作用。我怎样才能运行这个?通常,在 Windows 中,您选择工具 > 引用并检查 oledb 连接,但 Excel Mac 中没有工具选项。我不知道代码在这里很重要,但无论如何我都会分享它。

Dim sorgu1 As String
Dim con As Object, rs As Object
    Set con = CreateObject("adodb.connection")
    Set rs = CreateObject("adodb.recordset")
    con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
    ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""

    makine = Sheets("Dashboard").Cells(2, 11).Value

    sorgu1 = "select [Resource Id], [Order No], Sum(([Bitim Zamani]-[Basl Zamani])*1440)" 'as Plansiz, Sum(([Bitim Zamani]-[Basl Zamani])*1440)as Planli, Sum([Qty]) as Uretim"
    sorgu1 = sorgu1 + " from [Data$] where …
Run Code Online (Sandbox Code Playgroud)

oledb macos excel vba

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

使用 Schema.ini 文件在 CSV 文件中缺少日期列

注意:回答我自己的问题以帮助将来帮助他人。


我正在使用 OleDB 读取 CSV 文件:

DataTable csvTableSchema = new DataTable();

//Open the CSV
string csvFilePath = "C:\\temp\\WithDateColumn.csv";
var connString = string.Format(
    @"Provider=Microsoft.Jet.OleDb.4.0; Data Source={0};Extended Properties=""Text;HDR=YES;FMT=Delimited""",
    Path.GetDirectoryName(csvFilePath)
);

//To read the csv with DataTypes we specify the columns and their datatypes in the Schema.ini
//REF https://docs.microsoft.com/en-us/sql/odbc/microsoft/schema-ini-file-text-file-driver

using (var conn = new OleDbConnection(connString))
{
    conn.Open();
    var query = "SELECT * FROM [" + Path.GetFileName(csvFilePath) + "]";
    using (var adapter = new OleDbDataAdapter(query, conn))
    {
        var ds = new DataSet("CSV File");
        adapter.Fill(ds); …
Run Code Online (Sandbox Code Playgroud)

csv oledb schema datetime

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

如何使用OleDb创建Excel数据库

我的任务是使用Access数据库并创建一个Excel文件,但我似乎无法创建 OleDb将使用的Excel文件.

Excel文件名将由运行该工具的工程师提供.Access数据库中的每个数据表都将成为Excel文件中的工作表.

现在,我有一个我无法克服的烦恼:如果Excel文件不存在,我无法创建它!

internal const string XL_FMT = "Provider=Microsoft.{0}.OLEDB.{1};Data Source={2};Mode=ReadWrite;Extended Properties=\"Excel {1};HDR={3};IMEX=1;\"";
internal DataTable tableNames;
internal OleDbConnection oleCon;
private string conStr;

public OleBase(string connectionString) {
  conStr = connectionString;
  // Using the debugger, conStr is:
  // "Provider=Microsoft.ACE.OLEDB.12.0;" +
  // "Data Source=C:\\Users\\cp-jpool\\Documents\\Ecat5.xlsx;" +
  // "Mode=ReadWrite;Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1;\""
  object[] param = new object[] { null, null, null, "TABLE" };
  oleCon = new OleDbConnection(conStr);
  oleCon.Open();
  tableNames = oleCon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, param);
}
Run Code Online (Sandbox Code Playgroud)

如果Excel文件不存在,每当我调用时,Open()我都会得到以下OleDbException:

" Microsoft Access数据库引擎找不到对象'C:\ Users\cp-jpool\Documents\Ecat5.xlsx'.确保对象存在,并正确拼写其名称和路径名.如果'C:\ Users\cp-jpool\Documents\Ecat5.xlsx'不是本地对象,请检查您的网络连接或联系服务器管理员. "

所以,文件不存在,呵呵?好吧,我尝试通过修改我CTor()来创建它: …

c# oledb excel oledbconnection

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

写入Access时INSERT INTO语句中的语法错误

我正在尝试编写一个程序,我可以将数据写入Access数据库,但我不断收到错误"INSERT INTO语句中的语法错误".

FirstLast是表的名称; First并且Last是其中的列.

Imports System.Data.OleDb

Public Class Form1
    Dim theConnectionString As New OleDbConnection
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        theConnectionString.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\user\Documents\Database1.accdb"

        Dim cmd As OleDbCommand = New OleDbCommand("INSERT INTO FirstLast (First, Last) VALUES (@First, TextBox1.text)", theConnectionString)

        cmd.Parameters.Add("@First", OleDbType.Char, 255).Value = TextBox1.Text
        cmd.Parameters.Add("@Last", OleDbType.Char, 255).Value = TextBox1.Text

        Try
            theConnectionString.Open()
            cmd.ExecuteNonQuery()
        Catch ex As Exception
            Throw ex
        Finally
            theConnectionString.Close()
        End Try

    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)

.net database vb.net oledb ms-access

0
推荐指数
1
解决办法
866
查看次数