我最近提出了另一个关于在C#或VB.NET中使用.NET连接MS-ACCESS数据库的问题.它与MDB一样正常工作,但是使用accdb它会导致异常
conn.Open();
Run Code Online (Sandbox Code Playgroud)
其中包括:
alt text http://dl.dropbox.com/u/3045472/accdb_fail.png
还有另一种方法吗?我的初衷(如原始问题中所述)正在收集一些(实际上,很多)字段.
我有一个SQL语句,我正在通过OleDb执行,语句是这样的:
INSERT INTO mytable (name, dept) VALUES (@name, @dept);
Run Code Online (Sandbox Code Playgroud)
我正在向OleDbCommand添加参数,如下所示:
OleDbCommand Command = new OleDbCommand();
Command.Connection = Connection;
OleDbParameter Parameter1 = new OleDbParameter();
Parameter1.OleDbType = OleDbType.VarChar;
Parameter1.ParamterName = "@name";
Parameter1.Value = "Bob";
OleDbParameter Parameter2 = new OleDbParameter();
Parameter2.OleDbType = OleDbType.VarChar;
Parameter2.ParamterName = "@dept";
Parameter2.Value = "ADept";
Command.Parameters.Add(Parameter1);
Command.Parameters.Add(Parameter2);
Run Code Online (Sandbox Code Playgroud)
我得到的问题是,如果我添加参数以反过来命令,那么列将填充错误的值(即名称在dept列中,反之亦然)
Command.Parameters.Add(Parameter2);
Command.Parameters.Add(Parameter1);
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果参数值只是按照添加命令的顺序插入到表中,参数名称的重点是什么?参数名称似乎多余?
我正在尝试使用64位进程读取Excel电子表格.因此,我使用64位版本的Micorosft Access数据库引擎2010.
以下代码
var cs = @"Provider=Microsoft.ACE.OLEDB.12.0;"
+ @"Data Source=C:\test.xls;"
+ @"Extended Properties=""Excel 14.0;""");
con = new OleDbConnection(cs);
con.Open();
Run Code Online (Sandbox Code Playgroud)
抛出异常:
找不到可安装的ISAM
使用谷歌我发现了很多关于这个例外的问题.但他们提到JET并且似乎不适用于我的问题.
有什么建议?
我的任务是使用Windows窗体中的MSChart制作烛台图.我已经成功制作了一个没有问题的3D条形图.但经过长时间的互联网搜索,微软的源代码(WinSamples)以及大量的头像,我无法找到创建烛台图的正确方法.
有什么可以帮助我的是一个明确的例子,即在图表中添加一个系列,其中包含多个Y值或我的代码的更正(当我运行时,调试没有显示为图例标签的exept).
奖励将是该示例基于OleDB(我的值在Access数据库中).
所以我的问题是:如果你有在Windows窗体中用C#创建烛台图表的经验,你可以给我一个提示或(甚至更好)你能给我一些c#代码吗?
这是我当前(不工作)的代码:
using System.Windows.Forms.DataVisualization.Charting;
public partial class CandleStick : Form
{
public CandleStick()
{
InitializeComponent();
}
private void CandleStick_Load(object sender, EventArgs e)
{
GrafiekLaden();
}
public void GrafiekLaden()
{
Koers k = new Koers();
// This method fills up a list, the data comes from my database
// it contains Date, High, Low, Open, Close
k.meerdereOphalen();
Series price = new Series();
chart1.Series.Add(price);
// Set series chart type
chart1.Series["price"].ChartType = SeriesChartType.Candlestick;
// Set the style of the open-close …Run Code Online (Sandbox Code Playgroud) 在我的服务器上,我使用SqlClient连接到SQL Server,Oledb用于连接Oracle的旧应用程序和ODP.NET用于连接Oracle的新应用程序.
我在perf计数器中看到:
但我只能为Sql Server和ODP.NET添加和查看.NET Data Provider的计数器.在.NET数据提供程序的Oracle(我的意思是System.Data.Oledb)不能正常工作.
资源:
OleDb提供程序不公开性能计数器.
那是对的吗?
显然(MSDN)有时候OleDbConnection.ResetState()什么都不做,所以即使连接失败,OleDbConnection.State仍然会被设置为Open.我正在寻找最好的解决方法,以便当我检查连接状态时,我可以避免引发异常(只要连接在上次检查和使用尝试之间没有失败).
没有什么比每次发送"无用的"sql语句只是为了查看是否抛出异常更好的了吗?在实际使用之前,如何确保连接已打开?
我正在使用oledb连接将Excel工作表导入DataTable,如下所示.
private static DataTable UploadExcelSheet(string fileName)
{
DataTable uploadDataTable;
using (OleDbConnection objXConn = new OleDbConnection())
{
objXConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName +
";Extended Properties=\"Excel 12.0;IMEX=1\"";
objXConn.Open();
OleDbCommand objCommand =
new OleDbCommand("SELECT * FROM Template$ ", objXConn);
OleDbDataAdapter objDataAdapter = new OleDbDataAdapter();
// retrieve the Select command for the Spreadsheet
objDataAdapter.SelectCommand = objCommand;
// Create a DataSet
DataSet objDataSet = new DataSet();
// Populate the DataSet with the spreadsheet worksheet data
objDataAdapter.Fill(objDataSet);
uploadDataTable = objDataSet.Tables[0];
}
return uploadDataTable;
}
Run Code Online (Sandbox Code Playgroud)
一切都运行正常,但是当用户在上传excel之前删除几行内容时会出现问题.它还会读取这些空行以及非空行,并且由于业务规则违规(缺少必填字段),因此在数据库中保存数据失败.我尝试的是在查询中放置条件: …
我正在尝试将基于SQL Server数据库的常量和连续的批量数据传输到MYSQL数据库.我想使用SQL Server的SSMS复制,但这显然只适用于SQL Server到Oracle或IBM DB2连接.目前,我们正在使用SSIS转换数据并将其推送到MYSQL数据库的临时位置,在该位置复制数据.我想以最快的方式传输数据和复杂的几种方法.
我有一种新方法,我计划转换数据,我相信这将解决大多数时间问题,但我想确保我们将来不会遇到时间问题.我已经设置了一个链接服务器,它使用MYSQL ODBC驱动程序在SQL Server和MYSQL之间进行通信.这看起来非常慢.我有一些代码也使用Microsoft的ODBC驱动程序,但使用得太少,我无法衡量性能.有谁知道在这两个数据库之间快速通信的方式?我一直在研究MYSQL的数据提供程序,它们似乎与OleDB层进行通信.我不太确定该相信什么,以及哪种方式可以引导任何想法?
我正在使用Windows窗体应用程序将数据导出到Excel.
应用程序是x64和x86构建的.
因此,必须安装两个版本的Microsoft Access数据库引擎才能在同一台计算机上运行该应用程序.
首先安装AccessDatabaseEngine.exe,并且AccessDatabaseEngine_x64.exe被动安装.
x64版本的应用程序正在运行
但x86版本正在增加
SEHException: "External component has thrown an exception."
at System.Data.Common.UnsafeNativeMethods.IDBInitializeInitialize.Invoke(IntPtr pThis)
at System.Data.OleDb.DataSourceWrapper.InitializeAndCreateSession(OleDbConnectionString constr, SessionWrapper& sessionWrapper)
at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OleDb.OleDbConnection.Open()
Run Code Online (Sandbox Code Playgroud)
代码部分如下;
var accessConnection = new OleDbConnection(connectionString);
accessConnection.Open();
Run Code Online (Sandbox Code Playgroud)
而ConnectionString是
Provider=Microsoft.ACE.OLEDB.12.0;Data Source="C:\Users\Me\Desktop\ExportTest.xls";Extended Properties="Excel 8.0;HDR=Yes";
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
oledb ×10
c# ×6
.net ×2
connection ×2
excel ×2
sql-server ×2
ms-access ×1
ms-jet-ace ×1
mschart ×1
mysql ×1
odbc ×1
odp.net ×1
oledbcommand ×1
oracle ×1
r ×1
vb.net ×1