Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataAdapter.Update返回1但数据库未更改时该怎么办?_C#_Database_Ms Access - Fatal编程技术网

C# DataAdapter.Update返回1但数据库未更改时该怎么办?

C# DataAdapter.Update返回1但数据库未更改时该怎么办?,c#,database,ms-access,C#,Database,Ms Access,我想使用以下代码在msaccess表中插入一个新行 class MachineDataTable : DataTable { public MachineDataTable() { Columns.Add(new DataColumn("ID", typeof(int))); Columns.Add(new DataColumn("Name", typeof(string))); PrimaryKey = new DataColum

我想使用以下代码在msaccess表中插入一个新行

class MachineDataTable : DataTable
{
    public MachineDataTable()
    {
        Columns.Add(new DataColumn("ID", typeof(int)));
        Columns.Add(new DataColumn("Name", typeof(string)));
        PrimaryKey = new DataColumn[] { Columns["ID"] };
    }
    ...
}
以下代码按预期工作:

da.ExecuteNonQuery(@"CREATE TABLE Machine (
            ID LONG NOT NULL,
            Name TEXT NOT NULL
        )");
DataAdapter InsertCommand是使用以下命令创建的:

DbCommand cmd = connection.CreateCommand();
cmd.CommandText = "Machine";
cmd.CommandType = CommandType.TableDirect;
da.InsertCommand = cmd;
然后我尝试插入一行

MachineDataTable table = new MachineDataTable();
DataRow row = table.NewRow();
row["ID"] = 1234; 
row["Name"] = "Name";
table.Add(row);
int n = da.Update(table);
//n == 1
Update调用返回1(行已更新),没有异常。 当我使用MsAccess查看数据库时,没有插入任何行。

您是否记得从某处实际调用类型为
MyDataTable
table
对象上的
MachineTable()
方法


似乎您打算让
MachineTable()
方法成为
MyDataTable
类的构造函数,但它不是。

据我所知,
TableDirect
实质上是对表发出
SELECT
查询,然后(在“如果执行此命令返回行”之后)中的注释),正在合并这些现有行。它没有执行插入/更新。也许考虑一个命令生成器?< /P>
(注意:我从来没有使用过DataAdapter-这纯粹是基于我对MSDN的解释;它很可能是错误的)

是否有可能涉及某些事务被回滚?在
机器
表中是否有任何行?@Simen否,表在前后都是空的。@Marc,据我所知,我尚未启动任何事务。@phq:您可以使用MSAccess客户端在表中插入行。很抱歉,我的部分造成了混淆,我已将所有代码更改为计算机,以使代码一致。MachineTable()应该是我的示例中的构造函数。