C#创建显示多个表中你要显示的列-----视图的创建过程.....

本文介绍如何在C#中创建SQL视图,以显示多个表的特定列。通过示例展示了一个功能,即输入学生学号后,显示其名字、宿舍和楼号。步骤包括在SQL中创建视图,以及在VS2008中编写代码实现视图的创建和查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      最近我们小组一直在忙着做我们软件班的作业..我们做的学生宿舍管理系统..很小的一个软件...

       昨天我同学就问我怎样在listview上显示多个表中他想要显示的信息...由于我只是一个对C#感兴趣的通信工程专业的学生...对数据库不怎么了解...所以这个问题我一时答不上来...但是这个功能是必须要的....所以我回到实验室上网查了下资料.....原来是可以实现的...不过要通过视图....

     在SQL中,一个视图是基于某个SELECT 语句的结果集的可视化的表。视图包含行和列,就像一个真实的表。视图中的域就是来自一个或多个数据库中的真实的表中的域。我们可以向试图添加SQL函数、WHERE以及JOIN语句,我们也可以提交数据,就像这些来自于某个单一的表。

     视图的概念我明白..简单的说就是一个"中间表"...里面存着多个表中你要显示的列.....这些列是你从多个表中提取出来的...但是就是不知道怎样在VS2008中创建一个视图....到今天早上才弄明白.....现在跟大家分享下...呵呵...

    举个很简单的例子吧....

    看这个界面

   

    我要实现的功能是当我输入学生的学号后 单击下面的OK按钮就会显示他的名字、他所在的宿舍和所在的楼号...

    现在来建视图:

    首先在服务器资源管理器上选择你用的数据库  然后单击右键选择新建查询

   

  然后就会出来这个对话框

 

选择你要显示出来的列所在的数据表....我选择的是T_DormBuilding 、 T_Dormitory 和T_Student(按住CTRL键多选) 这三个表 ,然后点击添加 就会出来下面的

这里得注意了  这里表与表之间的关系和E-R图中的要一样、因为这三个表出来后系统会自动给你确定他们的关系...这里得自己改下  ,改好后选择你要显示的列....然后在下面就会出现

 这里得说明下 为了防止这个视图中出现同样的列名..也为了以后写代码方便 最好给相同的列起个别名...像我上面就起了两个...系统会自动生成一段SELECT 语句...

  完成后就单击这个按钮 然后就会出现下面的这个数据表

   

当然了 我这里是有数据的...如果大家三个表里对应有数据的话这个表也会出来数据的...

    下面就是怎样用程序来实现创建视图了

    双击窗体上的创建视图按钮  在里面添加如下代码

  

Code:
  1. private void btnUse_Click(object sender, EventArgs e)   
  2. {   
  3.     try  
  4.     {   
  5.   
  6.         string SQL = "CREATE VIEW GetStudent AS  SELECT T_Student.F_Number, T_Student.F_Name, T_Dormitory.F_Number AS DorNo, " +   
  7.                      "T_DormBuilding.F_Number AS FloorNo " +   
  8.                     "FROM ((T_Student INNER JOIN T_Dormitory ON T_Student.F_DormitoryID = T_Dormitory.F_ID) " +   
  9.                     " INNER JOIN T_DormBuilding ON T_Dormitory.F_DormBuildingNo = T_DormBuilding.F_Number)";   
  10.                      
  11.         TService.DoExecute(SQL, nullnull);   
  12.     }   
  13.     catch (Exception Err)   
  14.     {   
  15.         MessageBox.Show(Err.Message);   
  16.     }   
  17. }  

          当然了 我这里调用了我们服务类里的一个函数  SQL语句AS后面的就是在选择要显示的列并起别名后系统自动生成的那个SELECT语句...

   

Code:
  1. public static class TService   
  2.     {   
  3.           /// <summary>   
  4.         /// 数据库连接信息   
  5.         /// </summary>   
  6.         public static string Connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:/asp.net程序/学生宿舍管理系统/database/学生宿舍管理系统.mdb";   
  7.         public static OleDbConnection _Conn = null;   
  8.         public static OleDbConnection Conn()   
  9.         {   
  10.             if (_Conn == null)   
  11.             {   
  12.                 _Conn = new OleDbConnection(Connstr);   
  13.                 _Conn.Open();   
  14.             }   
  15.             return _Conn;   
  16.         }   
  17.   
  18. public static int DoExecute(string SQL, string[] AParaNames, object[] AParaValues)   
  19.         {   
  20.             int Ares = 0;   
  21.             try  
  22.             {   
  23.                 OleDbCommand Acmd = new OleDbCommand(SQL, Conn());   
  24.                 if (AParaNames != null)   
  25.                 {   
  26.                     for (int i = 0; i < AParaNames.Length; i++)   
  27.                     {   
  28.                         OleDbParameter Ap = new OleDbParameter(AParaNames[i], AParaValues[i]);   
  29.                         Acmd.Parameters.Add(Ap);   
  30.                     }   
  31.                 }   
  32.                 Acmd.ExecuteNonQuery();   
  33.                 Ares = 1;   
  34.             }   
  35.             catch(Exception Err)   
  36.             {   
  37.                 Ares = 0;   
  38.                 MessageBox.Show(Err.Message);   
  39.             }   
  40.             return Ares;               
  41.         }  

       这样一个视图就创建好了....

   然后双击窗体上的OK按钮 写入如下程序

Code:
  1. private void btnOK_Click(object sender, EventArgs e)   
  2.         {   
  3.             string ACode = txtCode.Text;   
  4.             try  
  5.             {   
  6.                 string SQL = "SELECT * FROM GetStudent WHERE F_Number=@ACode";   
  7.                 string[] Apn = new string[] { "@ACode" };   
  8.                 object[] Apv = new object[] { ACode };   
  9.                 DataTable Adt = TService.GetDataTable(SQL, Apn, Apv);   
  10.                 if (Adt.Rows.Count >0)   
  11.                 {   
  12.                     txtName.Text = Adt.Rows[0]["F_Name"].ToString();   
  13.                     txtFloor.Text = Adt.Rows[0]["FloorNo"].ToString();   
  14.                     txtDormitory.Text = Adt.Rows[0]["DorNo"].ToString();   
  15.                 }   
  16.                 else  
  17.                 {   
  18.                     MessageBox.Show("   没有相应的数据!   ");   
  19.                 }   
  20.             }   
  21.             catch(Exception Err)   
  22.             {   
  23.                 MessageBox.Show(Err.Message);   
  24.             }   
  25.                
  26.         }  

 

 

按F5运行后 先点击下创建视图那个按钮  然后在输入学号 例如我输入20062084  当我单击了OK按钮后就出来下面的

这样我要显示的信息就显示出来了.....

    创建视图这个按钮第一次运行的时候按一下就可以了    不然会提示你那个视图已经存在了的....

     好了...收工.....本人文采不是很好.....希望大家能指出其中的不足....你指出来的问题是我前进的脚步....O(∩_∩)O~   

      不知道我们以后还会出现什么样的困难....但是我相信困难时可以突破的...只要有信心和毅力.....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值