当我尝试执行涉及 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,但我仍然遇到相同的错误。
关于如何解决这个问题有什么想法吗?谢谢。
目前我正在尝试使用此功能导入 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) 如何将 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# 中现有的 MS Access 数据库表中。但是,当我调用 DataAdapter\xe2\x80\x99s Update 方法时,我在 INSERT INTO 语句\xe2\x80\x9d 中收到 \xe2\x80\x9c 语法错误。我的代码是:
\n\ntry\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) 我正在尝试将带有唯一标识符列的 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] 存在错误。返回的列状态为:“由于可能丢失数据,无法转换该值。”。
我使用 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) 我已经通过 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 读取 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) 我的任务是使用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()来创建它: …
我正在尝试编写一个程序,我可以将数据写入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)