C# TableAdapter for both Access and SQL Server

本文关键字:and SQL Server Access both TableAdapter for | 更新日期: 2023-09-27 18:15:08

我正在尝试创建一个软件,允许客户上传由一台设备生成的数据到他们自己的数据库。

为此,我在Visual Studio 2015中基于a *设计了一个数据集。包含所需表的MDB文件。表适配器向导在为强类型数据集设计表适配器和查询方面做得非常出色。该表中除Date和Time字段为Date/Time以外的所有类型都是Text。生成的语句如下:

INSERT INTO ' tblVoltechRunID ' (' RunID ', ' Date ', ' Time ', ' ATUnitID ', ' PartID ', ' FixtureID ', ' OperatorID ', ' BatchID ', ' TransformerSerialNo ', ' OverallResult ') VALUES (?), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

但是,当切换到SQL数据库时,严重的重音会导致插入语句由于语法错误而失败。手动删除重音导致查询成功。

是否可以使用visual studio的数据集设计器来制作跨平台兼容的TableAdapter?

C# TableAdapter for both Access and SQL Server

是否可以使用visual studio的数据集设计器来制作跨平台兼容的TableAdapter?

你也许可以利用这个事实……

  1. Access SQL和T-SQL都支持方括号作为表名和列名的分隔符,
  2. System.Data。OleDb 允许命名参数,尽管它忽略名称并将参数严格视为位置

…并将InsertCommand生成的CommandText修改为

INSERT INTO [tblVoltechRunID] 
([RunID], [Date], [Time], [ATUnitID], [PartID], [FixtureID], [OperatorID], [BatchID], [TransformerSerialNo], [OverallResult]) 
VALUES 
(@RunID, @Date, @Time, @ATUnitID, @PartID, @FixtureID, @OperatorID, @BatchID, @TransformerSerialNo, @OverallResult) 

我刚刚在Access数据库中用TableAdapter测试了类似的东西,它为我工作,尽管它破坏了TableAdapter的设计器视图(而且,说实话,这对我来说似乎有点太危险了)。

?不是SqlCommand.Parameters的有效名称参数。您应该使用名称参数。

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn; //your SqlConnection object
cmd.CommandText = @"
INSERT INTO tblVoltechRunID 
     (RunID, Date, Time, ATUnitID, PartID, FixtureID, OperatorID, BatchID, TransformerSerialNo, OverallResult) 
VALUES 
     (@RunID, @Date, @Time, @AtUnitID, @PartID, @FixtureID, @OperatorID, @BatchID, @TransformerSerialNo, @)";
cmd.Parameters.AddWithValue("RunID", runID); //runID value which you want to put in RunID variable
//define other parameters in same way