- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不断收到 InvalidOperationException(“当传递带有修改行的 DataRow 集合时,更新需要有效的 UpdateCommand”)。我只是无法弄清楚更新命令有什么问题。
这是我到目前为止的代码:
OleDbConnection connection;
OleDbDataAdapter clientsAdapter new OleDbDataAdapter();
DataSet myDataSet = new DataSet();
public void Setup()
{
connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Clients.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES"";";
connection = new OleDbConnection(connectionString);
connection.Open();
// SQL
clientsAdapter.SelectCommand = new OleDbCommand("SELECT * FROM [Clients$]", connection);
OleDbCommand updateCmd = new OleDbCommand(
"UPDATE [Clients$] " +
"SET " +
"[Family Name] = ?, " +
"[Given Name] = ?, " +
"Address = ?, " +
"[Home Phone] = ?, " +
"[Work Phone] = ?, " +
"[Mobile Phone] = ?, " +
"Email = ?, " +
"Status = ?, " +
"Comments = ? " +
"WHERE " +
"[Last Name] = ? AND " +
"[First Name] = ?"
// SET clause
updateCmd.Parameters.Add("Family Name", OleDbType.Char, 100, "Family Name");
updateCmd.Parameters.Add("Given Name", OleDbType.Char, 100, "Given Name");
updateCmd.Parameters.Add("Address", OleDbType.Char, 100, "Address");
updateCmd.Parameters.Add("Home Phone", OleDbType.Double, 100, "Home Phone");
updateCmd.Parameters.Add("Work Phone", OleDbType.Char, 100, "Work Phone");
updateCmd.Parameters.Add("Mobile Phone", OleDbType.Char, 100, "Mobile Phone");
updateCmd.Parameters.Add("Email", OleDbType.Char, 100, "Email");
updateCmd.Parameters.Add("Status", OleDbType.Char, 100, "Status");
updateCmd.Parameters.Add("Comments", OleDbType.Char, 100, "Comments");
// WHERE clause
OleDbParameter fName = updateCmd.Parameters.Add("Old Family Name", OleDbType.Char, 100, "Family Name");
fName.SourceVersion = DataRowVersion.Original;
OleDbParameter lName = updateCmd.Parameters.Add("Old Given Name", OleDbType.Char, 100, "Given Name");
lName.SourceVersion = DataRowVersion.Original;
clientsAdapter.InsertCommand = updateCmd;
// create table and fill
DataTable clients = new DataTable("Clients");
clientsAdapter.Fill(clients);
myDataSet.Tables.Add(clients);
connection.Close();
}
public void UpdateDb()
{
connection.Open();
clientsAdapter.Update(myDataSet, "Clients"); // errer occurs here
connection.Close();
}
最佳答案
你还没有设置UpdateCommand
客户端适配器的属性。
您创建了一个 OleDbCommand
称为“updateCmd”,但随后您已将 InsertCommand 属性设置为它:clientsAdapter.InsertCommand = updateCmd;
我怀疑你想要:clientsAdapter.UpdateCommand = updateCmd;
关于c# - 如何使用 oleDbDataAdapter.Update(myDataSet) 更新 excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10535663/
嘿,我正在使用 DataAdapter 读取 excel 文件并用该数据填充数据表。 这是我的查询和连接字符串。 private string Query = "SELECT * FROM Sheet
在我的应用程序中,我从本地 MS Access 数据库文件中获取一些数据。我对一个偶发问题感到困惑,我对特定表的所有记录的查询有时会返回所有记录,有时会返回除最后一条记录以外的所有记录。我正在使用以下
我在 sql server 表中有记录。我正在从 sql server 中填充 DataTable 中的所有记录,然后我想将所有记录插入访问表中。但是没有数据插入,插入时也没有发生错误。请提供需要的帮
我无法在 OleDbDataAdapter 中填充数据 我收到一个包含以下消息的 OleDbExceptionFROM 子句中的语法错误。 在这一行 adapter.Fill(dataset, "Us
我创建了一个包含两个表的数据库,然后我执行这段代码,但它对表没有任何作用。 private void CreateConstraint(DataSet dataSet, string table1,
我的 Windows 窗体应用程序包含 OleDbDataAdapter,从远程数据库获取数据需要花费更长的时间。它无法检索/保存 5000 行之类的表数据(应用程序受到攻击)。这是我的代码。 env
我正在使用 OleDbDataAdapter 读取数据集中 Excel 工作表的内容。 Excel 工作表由 20391 行组成,数据集在我的本地机器上运行时读取总行数,但在 IIS7.5 服务器上运
我正在尝试构建一个将读取 excel 文件(.xlsx、.xls)的应用程序。不幸的是,OleDbDataAdapter.Fill() 的性能非常糟糕。我最多需要 2 分钟才能从文件中读取一条记录。
我想在数据集中添加行,但只添加特定数量的行(为了避免“定义的字段过多”异常)。到目前为止,这是我尝试过的: OleDbCommand command = new OleDbCommand(@"SELE
我正在使用 C# 和 OleDb 访问 Oracle 数据库,我已经成功地从查询中提取数据,但是我无法使用 OleDbAdapter.Update() 更新数据库,我的更新代码如下。 (“适配器”是对
我的 Access 数据库中有一个这样的表 id name address date 1 first addresss 5/6/2005 9:17:52 AM 2 t
我正在使用 OleDbDataAdapter(准确地说是 Microsoft.ACE.OLEDB.12.0)从 Excel 工作簿中检索数据。对于一个表,我使用的是类型化数据集,但对于另一个表,我不能
有人能帮帮我吗?如何使用 OleDbDataAdapter 只读取 Excel 文件的第一行? 我知道如何从任何电子表格中读取所有数据: var dataAdapter = new OleDbData
我正在使用 OleDb 填充数据表。我正在尝试使用参数化查询,但它似乎不适用于 OleDbDataAdapter。有人有什么建议吗? cmd.CommandText = "SELECT A,B,C,D
我不确定我在这里做错了什么——在调试器中,对文件名所做的更改正确地应用于我为更新命令从中提取的数据集,但是当我检查之后数据库没有进行任何更改...所以我有点困惑... using (System.Da
首先,我想说我是在深水区,因为我只是对公司其他人编写的代码进行一些更改,使用 OleDbDataAdapter 与 Excel 进行“对话”,然后我'我不熟悉那个。那里有一个错误,我无法理解。 我正在
我正在使用 OleDbDataAdapter 从 excel 文件中提取 DataSet,但我在 SELECT 语句中遇到问题 DataSet excelDataSet = new DataSet()
我可以一次将一行添加到我的 Excel 电子表格中,但是速度非常慢(400 条记录需要 1 分钟,即使使用 Prepare 也是如此)。所以,我知道 Sql 是有效的并且 DataTable 是好的。
我不知道为什么,但是当我使用 OleDbDataAdapter 或 OleDbCommand 读取 CSV 文件时,在这两种情况下,结果数据的结构都很好(它识别文件头中的列),但行数据都是空的字符串。
我正在尝试获取一个 DataTable,读取一个 .xls 文件。如果我使用大小为 25kb 的 .xls 文件运行以下代码,它工作正常,但如果我加载更大的文件 (7,52MB),它就不起作用。 st
我是一名优秀的程序员,十分优秀!