日期:2014-05-17  浏览次数:20983 次

一个简单的C#代码
小弟刚学C#
  private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            using (SqlConnection con = new SqlConnection(@"Data Source =.\SQLEXPRESS;AttachDBFilename=C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\DB_DataBase.mdf;Integrated Security=True;
            User Instance=true;"))
            {

                // string sql = "SELECT name FROM SysColumns WHERE SysColumns.id=object_id('" + comboBox1.Text + "')";
               
                //string sql="SELECT * FROM "+comboBox1.Text;
                string table=comboBox1.Text;
                string sql = string.Format("SELECT * FROM {0}",table);
                con.Open();
                SqlDataAdapter ada = new SqlDataAdapter(sql,con);
                DataSet ds = new DataSet();
                ada.Fill(ds,"table");
                dataGridView1.DataSource = ds.Tables[0];
               con.Close();
                
                  
            }
            
                                       
            }
提示说:对象名 'System.Data.DataRowView' 无效。
怎么改代码……

------解决方案--------------------
先下断点 查查 string table=comboBox1.Text; 
得到的 table 是什么值,值对不对。
也许返回的是其他 数据库中没有的数据。
一般comboBox 有 selectedText 还是 selectedValue 属性 试试看。

然后 如果得到 table 有 数据 但是 后面查询 出错。
那么 你试试 直接 将 table 替换 成 数据库中已有的表名 看看是否能读取数据。

如果 select * from 表名 仍然 出错 那可能就是 连接字符 或者 打开方式不对了。。。
------解决方案--------------------
string sql = string.Format("SELECT * FROM {0}",table);

这句加个断点跟踪下,不是一下子就知道了