SqlCommandBuilder.GetUpdateCommand.CommandText.ToString()
SqlCommandBuilder.GetInsertCommand.CommandText.ToString()
SqlCommandBuilder.GetDeleteCommand.CommandText.ToString()

解决方案 »

  1.   

    GetUpdateCommand这样写根本不行。
    GetUpdateCommand是方法,改成SqlCommandBuilder.GetDeleteCommand().CommandText后,得到的结果不是实际的SQL语句,而是包含?的语句。
      

  2.   

    C#中没有提供类似的方法和属性能完成你的要求,其实是你的处理方式有点问题。既然你想写日志文件,那么你就自己构造SQL语句(包含着你所有的参数)来操作数据库。不过你的问题也不是不能解决,我做了一下调查,你的问题的可以这样来解决:
    DataAdapter.Update()执行时可以在DataAdapter中加入OleDbRowUpdatingEventHandler事件处理程序,我们就可在数据库更新时来写日志文件了。代码如下:
    DataAdapter.RowUpdating += new System.Data.OleDb.OleDbRowUpdatingEventHandler(this.Crruent_CommandText);//为DataAdapter添加事件private void Crruent_CommandText( object sender , System.Data.OleDb.OleDbRowUpdatingEventArgs e )
    {
    string strCommandText = "" ;
    System.Data.OleDb.OleDbParameterCollection OleDbParameters = e.Command.Parameters ;
    string[] ArrCommandText = e.Command.CommandText.Split('?') ;
    for( int ParamIndex = 0 ; ParamIndex < OleDbParameters.Count ; ParamIndex++ )
    {
    strCommandText += ArrCommandText[ParamIndex] + OleDbParameters[ParamIndex].Value.ToString() ;
    }
    strCommandText += ArrCommandText[OleDbParameters.Count] ;
    //此处即可以把strCommandText写入你的日志文件了 ;
    }