C#连接Oracle数据库+窗体间传递数据库工作空间执行流程

本文详细介绍了一种在C#应用程序中实现Oracle数据库连接的方法,包括通过窗体控件输入参数进行连接、将连接传递到主窗体以及在其他窗体中使用该连接进行数据处理的过程。

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

今天写的多线程没有起到多线程的目的,速度并没有起来。只能靠写博客来排解心中的郁闷了。

今天写的东西之前博客也略微提及了,那就是连接数据库,然后传递数据库工作空间。今天自己再详细记述一下C#连接Oracle数据库。我尽可能说的清楚!

日常使用主要分三步:连接数据库、到主窗体、分发出去。

1、连接数据库其中一种方法:采用窗体控件来输入参数连接。

背后的代码如下:

public partial class LinkServerDatabaseForm : Form
    {//传参委托
        public delegate void saveOracleConnection(OracleConnection _conn);
        OracleConnection conn = new OracleConnection();
        saveOracleConnection soc;
        //--------负责传递工作空间--------注意括号内的内容saveOracleConnection _soc--------和下文又呼应-------
        public LinkServerDatabaseForm(saveOracleConnection _soc)
        {
            InitializeComponent();
            soc = _soc;
        }

 private void linkButton_Click(object sender, EventArgs e)
        {
            string dataBaseAddress = addressTextBox.Text.Replace(" ","");//去掉空格
            string sid = sidTextBox.Text.Replace(" ", "");
            string userName = nameTextBox.Text.Replace(" ", "");
            string password = passwordTextBox.Text.Replace(" ", "");

            string connString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=" + dataBaseAddress + ")(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=" + sid + ")));Persist Security Info=True;User ID=" + userName + ";Password=" + password + ";";//连接字符串

            conn = new OracleConnection(connString);
            try
            {
                conn.Open();//打开连接

                soc(conn);//保存连接

                MessageBox.Show("数据库连接成功","提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception err)
            {
                MessageBox.Show("数据库连接失败:"+err.Message,"错误", MessageBoxButtons.OK ,MessageBoxIcon.Error);
            }
        }

}

2、其他窗体想调用这个连接conn怎么办呢?

这是主窗体MainForm.cs,当我们点击数据库连接,弹出上一步骤数据库连接的窗口。这时候需要就需要把conn传递到MainForm.cs中。具体代码:

public partial class MainForm : Form
 {
 public OracleConnection conn = new OracleConnection();//数据库连接,数据库相关操作请使用此连接

 private void linkServerDatabase_Click(object sender, EventArgs e)
        {//------显示窗体------------此时已经传递空间从_conn到conn中------此时的conn已经变成主窗体Form中的全局变量了---------
            LinkServerDatabaseForm lsdf = new LinkServerDatabaseForm(saveOracleConnection);
            lsdf.Show();
        }

        //这儿saveOracleConnection可以省略,直接在LinkServerDatabaseForm(OracleConnection _conn)

       //为了防止出错,还是建议这样写

        void saveOracleConnection(OracleConnection _conn)
        {
            conn = _conn;
            toolStripStatusLabel1.Text = "数据库已连接";
        }

}

3、这时候需要处理数据用到这个conn了,那该怎么办呢?

//首先是点击数据处理-------以下代码还在主窗体中--------

private void button2_Click(object sender, EventArgs e)
        {
            ConnectionState connState= conn.State;
            if(connState== ConnectionState.Open)
            {//数据库已经打开
                //传递conn

                testForm sref = new testForm(conn);
                sref.Show();
            }
            else
            {
                MessageBox.Show("数据库未打开", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

//其次就是显示数据处理窗口了testForm

背后的代码就是接收主窗体传递过来的conn

 public partial class testForm : Form
    {
        OracleConnection conn = new OracleConnection();

        //这儿就是接受主窗体conn的OracleConnection _conn

         public testForm(OracleConnection _conn)
        {
            InitializeComponent();

            conn = _conn;

        }

}

这样就完成了传递。

日常的开发大概就是这么三个部分,有些讲的不明白地方还请指教。我个人觉得比较难的地方就是,如何把连接数据库的窗体内容传递到主窗体这一步。当然也有别的方法,比如我上一篇博客,就直接把连接写在主窗体中,也是值得借鉴的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pupil_in_GIS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值