我在数据库中创建了一个视图来显示两个表中的部分关联数据,将此视图保存为TView,我想在C#程序中将此视图直接显示出来,但在网上查了下用法,都是通过select语句,然后用DataTable,DataViw来显示,这种的话直接写select语句然后再显示就可以了,还用视图干什么?

解决方案 »

  1.   

    你不用视图的话,表关系、显示的表字段,select就都得写在代码中。当你的表结构发生变化时,你就得修改代码重新编译。
    使用视图的话,表关系就在视图中。仍你视图再怎么变,只要视图名不变,都不需要去修改代码。
      

  2.   

    已经显示出来了,只是这种我就不明白那数据库中创建的那个视图和程序中创建的那个视图有什么联系?只是select语句一样?
      

  3.   


    string strCon = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DbTest.mdf;Integrated Security=True;User Instance=True";
                SqlConnection con = new SqlConnection(strCon);
                con.Open();
                string strSql = @"SELECT dbo.TUser.name AS 姓名, dbo.TUser.age AS 年龄, 
          dbo.TLogin.loginpwd AS 密码
    FROM dbo.TLogin INNER JOIN
          dbo.TUser ON dbo.TLogin.loginname = dbo.TUser.name";
                SqlDataAdapter da = new SqlDataAdapter(strSql, con);
                DataSet ds = new DataSet();
                da.Fill(ds, "TView");
                DataTable dt = ds.Tables["TView"];
                DataView dv = new DataView(dt);
                foreach (DataRowView drv in dv)
                {
                    string strdv = null;
                    for (int i = 0; i < dv.Table.Columns.Count; i++)
                    {
                        strdv += dv.Table.Columns[i].ColumnName + ": " + drv[i].ToString() + "\r\n";
                    }
                    MessageBox.Show(strdv);
                }
                con.Close();
            }我在数据库中创建了一个视图TView,其select语句为:SELECT dbo.TUser.name AS 姓名, dbo.TUser.age AS 年龄, 
          dbo.TLogin.loginpwd AS 密码
    FROM dbo.TLogin INNER JOIN
          dbo.TUser ON dbo.TLogin.loginname = dbo.TUser.name
    既然不能直接显示这个TView里面的内容,那和我直接在代码里面写select语句有何差别,搞不懂这个关系,还望高手指点.
      

  4.   

    你要明白你创建视图的目的,要是简单的一表,两表查询的话还真显示不出视图的作用,但是你要多表查询的话 你还用select 多表吗???? 你直接select *from view就行了,这不是简单了吗?? 好好的用下就知道了
      

  5.   

    感谢,搞了半天是直接select *from view,真是恍然大悟啊...tks
    结帖给分