连接数据库:Connection对象(一)

本文介绍了如何使用C#中的SqlConnection对象连接和关闭数据库。通过示例代码展示了连接字符串的配置、连接状态的检查及异常处理。同时对比了Close与Dispose方法在连接管理上的区别。

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

原文书籍:《C#从入门到精通》

Connection对象是一个连接对象,主要功能是建立与物理数据库的连接。

1、连接数据库

引用命名空间 using System.Data.SqlClient

private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text == "")                       //判断是否输入数据库名称
    {
        MessageBox.Show("请输入要连接数据库名称"); //弹出提示信息
    }
    else                                           //否则
    {
        try
        {
            //声明一个字符串,用于存储连接数据库字符串
            string ConStr = "server=.;database=" + textBox1.Text.Trim() + ";uid=sa;pwd=123";
            //创建一个SqlConnection对象
            SqlConnection conn = new SqlConnection(ConStr);
            conn.Open();                             //打开连接
            if (conn.State == ConnectionState.Open)  //判断当前连接的状态
            {
                //显示状态信息
                label2.Text = "数据库【" + textBox1.Text.Trim() + "】已经连接并打开";
            }
        }
        catch
        {
            MessageBox.Show("连接数据库失败");       //出现异常弹出提示
        }
    }
}

程序的运行效果如图所示:
这里写图片描述

2、关闭连接

当对数据库操作完毕后,要关闭与数据库的连接,释放占用的资源。可以通过调用SqlConnection对象的Close方法或Dispose方法关闭与数据库的连接。
这两种方法的主要区别是:Close方法用于关闭一个连接,而Dispose方法不仅关闭一个连接,而且还清理连接所占用的资源。当使用Close方法关闭连接后,可以再调用Open方法打开连接,不会产生任何错误。而如果使用Dispose方法关闭连接,就不可以再次直接用Open方法打开连接,必须再次重新初始化连接再打开。

SqlConnection conn;                                     //声明一个SqlConnection对象
private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text == "")                            //判断是否输入数据库名称
    {
        MessageBox.Show("请输入要连接数据库名称");      //弹出提示信息
    }
    else                                                //否则
    {
        try
        {
            //声明一个字符串,用于存储连接数据库字符串
            string ConStr = "server=.;database=" + textBox1.Text.Trim() + ";uid=sa;pwd=123";
            //创建一个SqlConnection对象
            conn = new SqlConnection(ConStr);
            conn.Open();                                 //打开连接
            if (conn.State == ConnectionState.Open)      //判断当前连接的状态
            {
                //显示状态信息
                MessageBox.Show("连接成功");
            }
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);                 //出现异常弹出提示
            textBox1.Text = "";                          //清空文本框
        }
    }
}

private void button2_Click(object sender, EventArgs e)
{
    try
    {
        string str = "";                                   //声明一个字符串变量
        conn.Close();                                      //使用Close方法关闭连接
        if (conn.State == ConnectionState.Closed)          //判断当前连接是否关闭
        {
            str = "数据库已经成功关闭\n";                  //如果关闭则弹出提示  
        }
        conn.Open();                                       //重新打开连接
        if (conn.State == ConnectionState.Open)            //判断当前连接是否打开
        {
            str += "数据库已经成功打开\n";                  //弹出提示  
        }
        richTextBox1.Text = str;                            //向richTextBox1中添加提示信息
    }
    catch (Exception ex)
    {
        richTextBox1.Text = ex.Message;                     //出现异常,将异常添加到richTextBox1中
    }
}

private void button3_Click(object sender, EventArgs e)
{
    try
    {
        conn.Dispose();                                     //使用Dispose方法关闭连接
        conn.Open();                                        //重新使用Open方法打开会出现异常
    }
    catch (Exception ex)
    {
        richTextBox1.Text = ex.Message;                     //出现异常,将异常添加到richTextBox1中
    }
}

程序运行结果如图所示:
这里写图片描述 这里写图片描述

说明:在编写应用程序时,对数据库操作完成后,要及时关闭数据库的连接,以防止在对数据库进行其他操作时数据库被占用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值