C#编程基础(下)第五课:ADO.NET数据库开发(一)使用Connection对象将窗体程序和数据库连接

知识点:

        了解 ADO.NET 的功能和组成、会使用 Connection 对象连接到数据库、掌握基本的异常处理、会使用 Command 对象查询单个值。

1、ADO.NET

1.1  ADO.NET是什么?

        ADO.NET是一组用于和数据源进行交互的面向对象类库,通过这些类,我们可以访问和操作数据库。ADO.NET是数据库访问的方法和技术,主要用于完成C#应用程序访问数据库

                                              应用程序、ADO.NET、数据库,三者之间的关系

 

                       

  • SQL Server是一个关系数据库管理系统。基于服务器端的中型的数据库,可以适合大容量数据的应用。
  • ACCESS是由微软发布的关联式数据库管理系统。桌面数据库,只适合于数据量少的应用系统。
  • Oracle基于服务器的大型数据库,主要应用于银行、证券类业务等。

 

1.2  ADO.NET的组成

        ADO.NET由两部分组成:DataSet(数据集)和.NET Framework数据提供程序

  • DataSet数据集——能临时保存各种类型数据库中的数据;
  • Net framework数据提供程序——它由几个组件组成,分别负责连接、操作和访问数据库,其中负责访问数据的组件是只读只进式的,也就是说只读不修改、只能往前读不能后退,这些我们会在后面详细介绍。

                       

 

1.3  ADO.NET怎么工作?

        ADO.NET主要通过以下对象操作数据库:

  •     Connection对象,负责连接数据库。
  •     Command对象,对数据库进行增删改的操作。
  •     Datareader对象,读取数据(只读只进)。
  •     DataAdapter对象,从数据库获取对象后填充给DataSet临时数据库。

 

                        

 

1.4   ADO.NET用在什么地方?

        ADO.NET允许和不同类型的数据源以及数据库进行交互。我们在学习《SQL Server数据库基础》时知道目前有多种数据库产品,比如我们使用的SQL Server,再比如Oracle数据库……数据库不一样,他们所用的数据源也保存在不同的命名空间里。导入命名空间的方法:Alt+Enter或者Shilt+Alt+F10。

 

2、Connection对象

2.1 Connection对象的作用

        Connection对象是应用程序和数据库的桥梁,起到数据连接的作用

2.2  Connection对象的种类

前面才学过不同的数据库产品,有不同的数据库源,保存在不同的命名空间,同样,他们也会使用不同的Connection类。我们本书用的是SQL Server数据库,存放在using System.Data.SqlClient;使用的是SqlConnection类。

                                                        不同命名空间的Connection对象

         命名空间

对应的 Connection 对象

System.Data.SqlClient 

SqlConnection

System.Data.OleDb

OleDbConnection

System.Data.Odbc 

OdbcConnection

System.Data.OracleClient

OracleConnection

MySql.Data.MySqlClientMySqlConnection
  

2.3  Connection对象的主要属性和方法

属性

说明

ConnectionString 

连接字符串

方法

说明

Open

打开数据库连接

Close

关闭数据库连接

  

2.4 使用Connection对象的步骤

第一步:创建连接对象(用已知的类创建对象)(要引入命名空间)

SqlConnection con = new SqlConnection();(在SqlServer数据库里,connection对象是SqlConnection类里的)//创建对象

第二步:定义连接信息(给对象添加属性)

  con.ConnectionString = "data source=服务器名; initial catalog=数据库名; integrated security=true"; //给对象添加属性

(注意:\符号,在C#中要使用\\表示)

第三步:连接数据库(调用对象的方法)

con.Open();//调用方法,打开数据库

MessageBox.Show("打开数据库连接成功");//这里是提示语

注意:连接数据库之前,保证已开开启数据库服务,并且要连接的数据库是存在的。

 

2.5 案例演示:在窗体中点击【测试】按钮,连接数据库。

前期准备工作:

第一步:在Visual Studio 2017软件中,新建一个窗体项目

第二步:在Visual Studio 2017软件中,添加MySQL数据库

 

 

第三步:在窗体上拖放一个button按钮,设置该button按钮的text属性为“测试”

第四步:创建一个数据库carsys,然后创建一个数据表brand,下面有2个字段BrandId,BrandName。

第五步:在Visual Studio 2017软件刚创建的项目中,双击窗体上的【测试】按钮,进入代码编写模式。

命名空间中增加:

 using MySql.Data.MySqlClient; 

第五步:在Visual Studio 2017软件刚创建的项目中,双击窗体上的【测试】按钮,进入代码编写模式。

 双击按钮,进入的是该按钮的点击事件,我们在点击事件(方法)里编写代码

(1)、创建连接字符串

  string constr = "Server=localhost;UserId=root;Password=68331;Database=CarSYS;pooling=false;CharSet=utf8;port=3306"

         Server=localhost      ---》 表示打开本地数据库

         UserId=root             ---》MYSQL数据库安装时规定的名称

         Password=68331     ---》MYSQL数据库安装时规定的密码

         Database=CarSYS    ---》使用Workbench软件创建的一个数据库,数据库名为 CarSYS

         port=3306                ---》MYSQL数据库安装时规定的端口

           //第一步:创建连接字符串
            string constr = "Server=localhost;UserId=root;Password=68331;Database=CarSYS;pooling=false;CharSet=utf8;port=3306";//声明一个字符串用来存放连接数据库的信息

 

 

(2)创建一个Connection对象。

    语法:方法名 对象名 = new 方法名();

 

            //第二步:创建一个MySqlConnection连接对象
            MySqlConnection con = new MySqlConnection(constr);//创建一个MysqlConnection对象

(3)连接数据库,使用对象con的方法Open()

语法:对象名.Open();

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //第一步:创建连接字符串
            string constr = "Server=localhost;UserId=root;Password=68331;Database=CarSYS;pooling=false;CharSet=utf8;port=3306";//声明一个字符串用来存放连接数据库的信息
            //第二步:创建一个MySqlConnection连接对象
            MySqlConnection con = new MySqlConnection(constr);//创建一个MysqlConnection对象
            //第三步:连接数据库,使用对象con的Open方法
            con.Open();
            MessageBox.Show("数据库连接成功!");    //消息提示框,用以告诉用户连接结果

            //注意:使用完后要关闭数据库。减小数据库所在服务器的压力
            con.Close();
        }
    }
}

注意:使用完后要关闭数据库。减小数据库所在服务器的压力。

 

运行结果如下:

 

3、异常处理

        程序在运行时,可能会因为各种突发状况出现异常。比如数据库服务器出错,网络断线等。异常的出现可能会导致程序突然退出,影响用户的使用。因此,程序员要在编码时对可能出现的异常进行处理,以保证程序的正常运行。

        方法:尝试出错。

        语法:


try
{
      //可能出现异常的代码
}
catch (处理的异常类型)
{
      //处理异常的代码
}

finally
{
     //无论如何都会执行的代码
}

        执行try语句里的代码,如果出现异常则执行catch语句代码,没有异常则catch语句代码不会被执行。异常的类型有很多,我们一般使用Exception,它代表所有的异常类型。此语法还可以添加finally语句,来执行一些无论有无异常,都要执行的代码,如关闭数据库等。

 

 private void button1_Click(object sender, EventArgs e)
        {
            //第一步:创建连接字符串
            string constr = "Server=localhost;UserId=root;Password=68331;Database=CarSYS;pooling=false;CharSet=utf8;port=3306";//声明一个字符串用来存放连接数据库的信息
            //第二步:创建一个MySqlConnection连接对象
            MySqlConnection con = new MySqlConnection(constr);//创建一个MysqlConnection对象
            //第三步:连接数据库,使用对象con的Open方法
            try
            {
                con.Open();  //打开数据库
                MessageBox.Show("数据库连接成功!");    //消息提示框,用以告诉用户连接结果
            }
            catch (Exception ex)//如果出现异常,则允许catch里的代码   
            {
                MessageBox.Show(ex.Message);//以消息框形式,输出异常消息            
            }
            finally //不管程序错误与否,都会执行的代码           
            {
                con.Close();
                MessageBox.Show("关闭数据库连接成功");
            }
        }

4、使用Command对象

        程序连接上数据库后,我们需要对数据库中的数据进行操作,Command(命令)对象可以对数据表中的数据进行增删改查操作。和Connection对象一样,不同的数据库产品有不同的命名空间,对应不同的Command对象。

                                                                    不同命名空间的Command对象

命名空间

对应的 Command 对象

System.Data.SqlClient 

SqlCommand

System.Data.OleDb

OleDbCommand

System.Data.Odbc 

OdbcCommand

System.Data.OracleClient

OracleCommand

MySql.Data.MySqlClientMySqlCommand
  

使用Command的步骤如下:

  1.  创建Connection对象
  2.  给Connection对象添加属性
  3.  调用Connection对象Open()方法打开数据库
  4.  创建sql语句字符串
  5.  创建Command对象 SqlCommand cmd = new SqlCommand(sql语句, Connection对象);
  6.  执行命令,并将结果赋值给变量 int count = Convert.ToInt32(cmd.ExecuteScalar());
  7.  输出结果

第一步:创建一个WINFORM窗体工程项目,窗体上有一个button1按钮。

第二步:添加MySQL数据库

 

第三步:鼠标双击button1按钮,进入程序编码

     命名空间增加  using MySql.Data.MySqlClient;

using MySql.Data.MySqlClient;

数据库CarSYS中有一个数据表Brand中的数据库记录如下:

 

 

完整的程序代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using MySql.Data.MySqlClient;

namespace WindowsFormsApp5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string constr = "Server=localhost;UserId=root;Password=68331;Database=CarSYS;pooling=false;CharSet=utf8;port=3306";//声明一个字符串用来存放连接数据库的信息
            //1.创建 SQLConnection 的实例
            MySqlConnection connection = new MySqlConnection(constr);//创建一个SqlConnection对象
            try       //将可能出错的语句放在try语句里
            {
                connection.Open();
                //创建查询用的SQL语句
                string sqlstr = "select count(*) from Brand";//声明一个字符串,用来存放查询数据库表语句
                //创建Command对象
                MySqlCommand cmd = new MySqlCommand(sqlstr, connection);
                //调用Command对象的方法
                int count = Convert.ToInt32(cmd.ExecuteScalar());
                //显示结果
                string message = string.Format("Brand表中共有{0}条信息!", count);
                MessageBox.Show(message);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);//以消息框形式,输出错误消息
            }
            finally
            {
                if (connection != null)
                {
                    //关闭数据库连接
                    connection.Close();
                    MessageBox.Show("关闭数据库连接成功");
                }
            }
        }
    }
}

运行效果如下:

 

5、实例练习

要求:模拟QQ登录窗体,用户输入账号、密码,和数据库中已存的信息进行匹配,正确则提示“成功”,错误则提示“错误”

分析:此功能首先需要连接数据库(Connection对象),其次要能够将用户输入的账号密码提取出来,并和数据库里的用户信息进行匹配查询(Command对象)。如何判断输入正确?只有用户名和密码一一匹配,才可以登录。

第一步:在Visual Studio 2017中设计窗体界面:

第二步:添加MySQL数据库

               参见上面过程

第三步:双击【登陆】按钮,进入事件编写代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using MySql.Data.MySqlClient;

namespace WindowsFormsApp5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //提取用户输入的账号和密码,后面要用来和数据库里的用户名和密码相匹配
            string name = textBox1.Text;
            string pwd = textBox2.Text;

            string constr = "Server=localhost;UserId=root;Password=68331;Database=CarSYS;pooling=false;CharSet=utf8;port=3306";//声明一个字符串用来存放连接数据库的信息
            //1.创建 SQLConnection 的实例
            MySqlConnection connection = new MySqlConnection(constr);//创建一个SqlConnection对象
            try       //将可能出错的语句放在try语句里
            {
                connection.Open();
                //创建查询用的SQL语句
                string sqlstr = string.Format("select count(*) from Brand where BrandId='{0}' and BrandName='{1}'", name, pwd);
                //创建Command对象
                MySqlCommand cmd = new MySqlCommand(sqlstr, connection);
                //调用Command对象的方法
                int count = Convert.ToInt32(cmd.ExecuteScalar());
                //显示结果
                if (count > 0)
                {
                    MessageBox.Show("登录成功");
                } else
                {
                    MessageBox.Show("登录失败");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);//以消息框形式,输出错误消息
            }
            finally
            {
                if (connection != null)
                {
                    //关闭数据库连接
                    connection.Close();
                    MessageBox.Show("关闭数据库连接成功");
                }
            }
        }
    }
}

运行效果

 

思考:如果用户没有输入账号或密码,直接点击【登陆】按钮,如何提示?(先提示用户用户或密码不能为空,如何实现?)

思考:如何实现用户的注册功能?窗体界面增加一个注册按钮,当用户注册成功后,使用新账户可以直接登录。

提示:ExecuteNonQuery方法的使用

 

6、实现用户的注册功能

  窗体界面增加一个注册按钮button2,当用户注册成功后,使用新账户可以直接登录。

完整的程序代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using MySql.Data.MySqlClient;

namespace WindowsFormsApp5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //提取用户输入的账号和密码,后面要用来和数据库里的用户名和密码相匹配
            string name = textBox1.Text;
            string pwd = textBox2.Text;

            string constr = "Server=localhost;UserId=root;Password=68331;Database=CarSYS;pooling=false;CharSet=utf8;port=3306";//声明一个字符串用来存放连接数据库的信息
            //1.创建 SQLConnection 的实例
            MySqlConnection connection = new MySqlConnection(constr);//创建一个SqlConnection对象
            try       //将可能出错的语句放在try语句里
            {
                connection.Open();
                //创建查询用的SQL语句
                string sqlstr = string.Format("select count(*) from Brand where BrandId='{0}' and BrandName='{1}'", name, pwd);
                //创建Command对象
                MySqlCommand cmd = new MySqlCommand(sqlstr, connection);
                //调用Command对象的方法
                int count = Convert.ToInt32(cmd.ExecuteScalar());
                //显示结果
                if (count > 0)
                {
                    MessageBox.Show("登录成功");
                } else
                {
                    MessageBox.Show("登录失败");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);//以消息框形式,输出错误消息
            }
            finally
            {
                if (connection != null)
                {
                    //关闭数据库连接
                    connection.Close();
                    MessageBox.Show("关闭数据库连接成功");
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //提取用户输入的账号和密码,后面要用来和数据库里的用户名和密码相匹配
            string name = textBox1.Text;
            string pwd = textBox2.Text;

            string constr = "Server=localhost;UserId=root;Password=68331;Database=CarSYS;pooling=false;CharSet=utf8;port=3306";//声明一个字符串用来存放连接数据库的信息
            //1.创建 SQLConnection 的实例
            MySqlConnection connection = new MySqlConnection(constr);//创建一个SqlConnection对象
            try       //将可能出错的语句放在try语句里
            {
                connection.Open();
                //创建查询用的SQL语句
                string sqlstr = string.Format("insert into Brand(BrandId,BrandName) values('{0}','{1}')", name, pwd);
                //创建Command对象
                MySqlCommand cmd = new MySqlCommand(sqlstr, connection);
                //执行command对象
                cmd.ExecuteNonQuery();
                MessageBox.Show("注册成功");  //提示消息框
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);//以消息框形式,输出错误消息
            }
            finally
            {
                if (connection != null)
                {
                    //关闭数据库连接
                    connection.Close();
                    //MessageBox.Show("关闭数据库连接成功");
                }
            }
        }
    }
}

 

————————————————
版权声明:本文为CSDN博主「逍遥小丸子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dnruanjian/article/details/90293680

https://blog.csdn.net/dnruanjian/article/details/90293680

 

 

 

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现连接数据库并实现下载列表,你需要先安装一个数据库管理系统,比如MySQL或SQL Server,并且在C#使用ADO.NET进行数据库连接和操作。 以下是一个基本的示例程序,可以帮助你实现下载列表: 1. 首先,你需要在中添加一个DataGridView控件,用于显示下载列表。 2. 在代码中添加以下命名空间: ```csharp using System.Data; using System.Data.SqlClient; //如果你选择使用SQL Server数据库 using MySql.Data.MySqlClient; //如果你选择使用MySQL数据库 ``` 3. 创建一个数据库连接对象,并打开数据库连接。以下是一个连接SQL Server数据库的示例代码: ```csharp string connectionString = "Server=数据库服务器地址;Database=数据库名称;Uid=用户名;Pwd=密码;"; SqlConnection connection = new SqlConnection(connectionString); connection.Open(); ``` 如果你选择使用MySQL数据库连接字符串的格式如下: ```csharp string connectionString = "Server=数据库服务器地址;Database=数据库名称;Uid=用户名;Pwd=密码;"; MySqlConnection connection = new MySqlConnection(connectionString); connection.Open(); ``` 4. 创建一个SQL查询语句,用于从数据库中获取下载列表。以下是一个示例代码: ```csharp string query = "SELECT * FROM DownloadList"; SqlCommand command = new SqlCommand(query, connection); //如果你选择使用SQL Server数据库 MySqlCommand command = new MySqlCommand(query, connection); //如果你选择使用MySQL数据库 ``` 5. 使用DataAdapter对象将查询结果填充到一个DataTable对象中: ```csharp DataTable downloadTable = new DataTable(); SqlDataAdapter adapter = new SqlDataAdapter(command); //如果你选择使用SQL Server数据库 MySqlDataAdapter adapter = new MySqlDataAdapter(command); //如果你选择使用MySQL数据库 adapter.Fill(downloadTable); ``` 6. 将DataTable对象绑定到DataGridView控件中: ```csharp dataGridView1.DataSource = downloadTable; ``` 7. 最后,关闭数据库连接: ```csharp connection.Close(); ``` 完整的示例代码如下: ```csharp using System; using System.Data; using System.Data.SqlClient; //如果你选择使用SQL Server数据库 using MySql.Data.MySqlClient; //如果你选择使用MySQL数据库 using System.Windows.Forms; namespace DownloadListApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // 创建数据库连接对象并打开连接 string connectionString = "Server=数据库服务器地址;Database=数据库名称;Uid=用户名;Pwd=密码;"; SqlConnection connection = new SqlConnection(connectionString); connection.Open(); // 创建SQL查询语句 string query = "SELECT * FROM DownloadList"; SqlCommand command = new SqlCommand(query, connection); //如果你选择使用SQL Server数据库 //MySqlCommand command = new MySqlCommand(query, connection); //如果你选择使用MySQL数据库 // 使用DataAdapter对象将查询结果填充到一个DataTable对象中 DataTable downloadTable = new DataTable(); SqlDataAdapter adapter = new SqlDataAdapter(command); //如果你选择使用SQL Server数据库 //MySqlDataAdapter adapter = new MySqlDataAdapter(command); //如果你选择使用MySQL数据库 adapter.Fill(downloadTable); // 将DataTable对象绑定到DataGridView控件中 dataGridView1.DataSource = downloadTable; // 关闭数据库连接 connection.Close(); } } } ``` 你需要将代码中的数据库服务器地址、数据库名称、用户名和密码替换为你自己的数据库信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值