CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

父窗体,子窗体连接数据库使用公共变量的问题, 大哥大姐,小弟分不多了,全给了,谢谢赐教

楼主hfy2003(凌云(骑猪追老虎))2005-04-08 10:48:58 在 .NET技术 / C# 提问

 
  父窗体,子窗体连接数据库使用公共变量的问题,   大哥大姐,小弟分不多了,全给了,谢谢赐教  
  我的办法是新建一个Form,   然后把Form的IsMdiContainer   属性改为   True  
  在.net   Windows   程序的主窗体里面通过如下的方式打开数据库.    
  首先定义连接数据库的变量  
      private   string     connStr;        
  public   System.Data.OleDb.OleDbConnection   conn;//定义为公共变量,   因为别的子Form   需要用到此conn连接数据库  
   
  在父窗体的Form_Load   事件中连接数据库  
  private   void   Form1_Load(object   sender,   System.EventArgs   e)   //   Form_load   时候打开  
  {  
  connStr   =   @"Provider=SQLOLEDB.1;Password=IEB;Persist   Security   Info=True;User   ID=IEB;Initial   Catalog=CUST;Data   Source=10.64.2.80";  
  conn   =   new   System.Data.OleDb.OleDbConnection(connStr);  
  conn.Open();  
  }  
   
  如果在父窗体中添加一个按钮和dataGRid控件  
  private   void   button1_Click(object   sender,   System.EventArgs   e)   //执行sql  
  {  
  string   sql;  
  sql="select   dd,qty   from   test";  
  System.Data.OleDb.OleDbDataAdapter   ada   =   new   System.Data.OleDb.OleDbDataAdapter(sql,conn);  
  System.Data.DataSet   ds     =   new   DataSet();  
  ada.Fill(ds);  
  if(ds.Tables[0].Rows.Count   >   0)  
  {  
  MessageBox.Show("数据存在");  
  this.dataGrid1.DataSource   =   ds.Tables[0];   //   DataGrid   控件附数据源  
  }  
  }  
  例如上述的代码,则数据可以读出来.  
   
  然后在父窗体上再加上菜单控件,在菜单下打开Form2,  
  private   void   menuItem3_Click(object   sender,   System.EventArgs   e)  
  {  
  Form2   fm2=new   Form2();  
  fm2.MdiParent=this;  
  fm2.Show();  
  }  
   
  我想在Form2上也添加一个按钮和一个DataGrid控件,   实现把数据读出来然后显示在DataGrid   里面,   现在遇到的问题如下,   Form2上的按钮下的代码和父窗体中按钮的代码相同  
   
  private   void   button1_Click(object   sender,   System.EventArgs   e)   //执行sql  
  {  
  string   sql;  
  sql="select   dd,qty   from   test";  
  System.Data.OleDb.OleDbDataAdapter   ada   =   new   System.Data.OleDb.OleDbDataAdapter(sql,conn);  
  System.Data.DataSet   ds     =   new   DataSet();  
  ada.Fill(ds);  
  if(ds.Tables[0].Rows.Count   >   0)  
  {  
  MessageBox.Show("数据存在");  
  this.dataGrid1.DataSource   =   ds.Tables[0];   //   DataGrid   控件附数据源  
  }  
  }  
  只是在执行的时候  
  System.Data.OleDb.OleDbDataAdapter   ada   =   new   System.Data.OleDb.OleDbDataAdapter(sql,conn); 有问题,  
  因为conn   是在父窗体中定义的,   我如何把父窗体中的conn   传到Form2   子窗体中,也就是实现如下的功能,   在父窗体Form_Load   的时候,打开数据库,  
  以后子窗体中的数据操作都使用父窗体中的conn.  
  大哥大姐,小弟分不多了,全给了,谢谢赐教.  
  我在Form2   中定义了conn变量  
  public   System.Data.OleDb.OleDbDataAdapter   conn;   //定义的conn   ,用来从主窗体中接conn  
  然后在父窗体打开子窗体的事件中执行如下的代码  
  private   void   menuItem3_Click(object   sender,   System.EventArgs   e)  
  {  
  Form2   fm2=new   Form2();  
  fm2.MdiParent=this;  
  fm2.conn=this.conn;  
  fm2.Show();  
  }  
   
  其中语句fm2.conn=this.conn;是想把父窗体中的conn传到子窗体,但是这句语法错误,   请问如何解决,   谢谢,好急啊  
   
  问题点数:60、回复次数:6Top

1 楼janus1999(天生傻冒)回复于 2005-04-08 10:55:37 得分 5

直接在form2中操作form1中的conn就可以嘛Top

2 楼tl_pear(飘叶寻梦)回复于 2005-04-08 10:59:50 得分 10

在Form2   定义private   System.Data.OleDb.OleDbConnection   conn;  
  public   System.Data.OleDb.OleDbConnection   getconn  
  {  
        get  
          {  
                return   conn  
            }  
        set  
        {  
  if   (value   !=   conn)  
  {  
  conn=   value;  
  }  
        }  
   
  然后在父窗体打开子窗体的事件中执行如下的代码  
  private   void   menuItem3_Click(object   sender,   System.EventArgs   e)  
  {  
  Form2   fm2=new   Form2();  
  fm2.MdiParent=this;  
  fm2.getconn=this.conn;  
  fm2.Show();  
  }  
   
   
  }Top

3 楼lqss20(网络野人)回复于 2005-04-08 11:00:36 得分 15

你可以把数据库连接写成一个静态变量,然后在Form2中直接引用form1.conn  
  另外,看了你的代码,你最好是专门把数据库方面操作建一个类,在用到的地方直接引用或实例化Top

4 楼hfy2003(凌云(骑猪追老虎))回复于 2005-04-08 11:03:35 得分 0

谢谢楼上的,   能否给一些实际的代码啊.Top

5 楼tl_pear(飘叶寻梦)回复于 2005-04-08 11:04:53 得分 15

或者,你把conn变量设为public   static   型变量,也可以解决这样的问题!  
  也就是把CONN设为全局的通用变量!Top

6 楼DRRDRRDRR(寂静深秋)回复于 2005-04-08 12:18:55 得分 15

public   static   string   connStr;Top

相关问题

  • 求教大哥大姐关于窗体等的几个问题
  • 关于窗体变量
  • 小弟有个子窗体显示的问题,向各位大哥大姐请教一下.急!!!!
  • 窗体变量的释放问题
  • 窗体之间变量转换问题
  • 怎样用变量控制窗体?????!!!!!?????????????
  • 请教窗体间变量传递
  • 子窗体如何访问父窗体的变量?
  • 请大哥大姐帮帮忙,要怎么才可以,最好的方法用子窗体修改父窗体的菜单属性呢,使主窗体菜单有效..
  • 如何在一窗体中引用另一窗体中的变量?

关键词

  • 数据库
  • 连接
  • sql
  • 窗体
  • 变量
  • 连接数据库
  • 公共
  • connstr
  • oledb
  • conn

得分解答快速导航

  • 帖主:hfy2003
  • janus1999
  • tl_pear
  • lqss20
  • tl_pear
  • DRRDRRDRR

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...

社区焦点:

教你怎样用C#搞笑整人
最懒惰的程序员写的Cache
程序员如何掌握专业英语
Java栈与堆
分享:让人懊恼的面试
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo