以下代码为啥出现:未处理的“System.ArgumentException”类型的异常出现在 system.windows.forms.dll 中。
其他信息: 无法创建字段 TROUBLE_INFO 的子列表。
/// <summary>
/// 执行查询并返回整个DataSet
/// </summary>
/// <param name="sql">要用于执行的SQL语句</param>
/// <returns>执行之后的DataSet</returns>public static DataSet getDataSet(string sql)
{
try
{
OleDbDataAdapter orclDataAdaprer;                
DataSet orclDataSet = new DataSet(); if(!object.Equals(dataReader,null) && dataReader.IsClosed == false)
{
dataReader.Close();
dataReader = null;
}
orclDataAdaprer = new OleDbDataAdapter(sql,orclConnection); 
                
orclDataAdaprer.Fill(orclDataSet);
return orclDataSet.Copy();
                
}
catch(Exception e)
{
System.Windows.Forms.MessageBox.Show(sql + System.Environment.NewLine + e.Message);
throw e;
}
}
private void WorkChildFrame_Load(object sender, System.EventArgs e)
{
string sql="SELECT * FROM TROUBLE_INFO"; 
this.dataGrid1.SetDataBinding(Db.getDataSet(sql),"TROUBLE_INFO");
}

解决方案 »

  1.   

    ArgumentException 一个或多个参数无效。 this.dataGrid1.SetDataBinding(Db.getDataSet(sql),"TROUBLE_INFO");看看你这个 table名字是不是TROUBLE_INFO,注意区分大小写你直接用this.dataGrid1.SetDataBinding(Db.getDataSet(sql).Tables[0]);试试
      

  2.   

    参数无效的错误orclDataAdaprer.Fill()处同时指定数据集和表名之后再写
    this.dataGrid1.SetDataBinding(Db.getDataSet(sql),"TROUBLE_INFO");
      

  3.   

    在orclDataAdaprer.Fill(orclDataSet);设个断点看看数据库连接或sql语句有没有错误。