苏飞论坛

标题: 将一个数据库中查询到的数据插入到另一个数据库中的相对应的表时出错 [打印本页]

作者: Yxrwendao    时间: 2013-4-7 13:53
标题: 将一个数据库中查询到的数据插入到另一个数据库中的相对应的表时出错



            string ptSqlStr = "select * from " + ptTableName + " where " + pesPointNum + " in(" +   PipeUtility.MegerPesPointNames(pesPointName) + ") order by " + pesPointNum;

            OleDbCommand command = new OleDbCommand(ptSqlStr);
            OleDbDataAdapter adapter = new OleDbDataAdapter();
            adapter.SelectCommand = new OleDbCommand(ptSqlStr, connection);
            DataSet ds = new DataSet();
            adapter.Fill(ds,ptTableName);


            string mSqlstr = "select * from " + ptTableName;
            OleDbDataAdapter newAdapter = new OleDbDataAdapter();
            OleDbCommand newCmd=new OleDbCommand(mSqlstr  ,newConnection);
            newAdapter.InsertCommand = newCmd;
            OleDbCommandBuilder ff = new OleDbCommandBuilder(newAdapter);
            try
            {
                newAdapter.Update(ds, ptTableName);
            }
            catch
            {
              出错:Update unable to find TableMapping['DSPOINT'] or DataTable 'DSPOINT'.
            }

在更新另一个数据库时出错 错误原因为Update unable to find TableMapping['DSPOINT'] or DataTable 'DSPOINT' ,我在网上查了一下,也没有结果,请教是什么原因?




作者: 站长苏飞    时间: 2013-4-7 14:17
如果你的Ds里只有一个表的话我建议你直接使用这个方法
[code=csharp]public DataSet CreateCmdsAndUpdate(string connectionString,
    string queryString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataSet customers = new DataSet();
        adapter.Fill(customers);

        //code to modify data in dataset here

        adapter.Update(customers);

        return customers;
    }
}[/code]
当然也可以使用下面的方法,楼主自己对比一下吧,或者直接使用我的方法看看
[code=csharp]public DataSet CreateCmdsAndUpdate(string connectionString,
    string queryString, string tableName)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataSet customers = new DataSet();
        adapter.Fill(customers);

        //code to modify data in dataset here

        adapter.Update(customers, tableName);

        return customers;
    }
}[/code]
作者: 站长苏飞    时间: 2013-4-7 14:25
这个方法的异常应该很好找,因为只有下面三种可能会出现异常情况
  1. ArgumentNullException       
  2. DataSet 无效。

  3. InvalidOperationException       
  4. 源表无效。

  5. DBConcurrencyException       
  6. 试图执行 INSERT、UPDATE 或 DELETE 语句,但没有记录受到影响。
复制代码

作者: Yxrwendao    时间: 2013-4-7 14:57
站长苏飞 发表于 2013-4-7 14:17
如果你的Ds里只有一个表的话我建议你直接使用这个方法

当然也可以使用下面的方法,楼主自己对比一下吧, ...

我就是按这种方法做的,但是数据库无反应。




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4