• 数据库应用开发一、vs


    今天数据库实验是“掌握数据库应用开发的一般方法”,开发环境是vs(我这里用的是19版)

    一、准备

    • 操作环境:win7以上
    • DBMS:MySQL 5.5
    • 开发环境:vs19(12及以上都可以)

    二、建立工程项目

    新建工程后默认模板

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data;
    using MySql.Data.MySqlClient;
    
    namespace LiwkerApp
    {
        class Program
        {
            static void Main(string[] args)
            
            {
                
            }
    
            
        }
    }
    

    后面就不多说了,一定要先导入程序包,再安装

    image-20201207195740829

    三、实验

    1.随机查询一个学生

    static void Main(string[] args)
            {
        		//定义好功能函数后,在main调用
                //show();
                //delOne();
                //Find();
                //showAll();
                //addOne1();
            }
    

    代码

    //显示学生的函数
            static void show()
            {
                // 定义一个连接到数据库的字符串
                // 这里连接的是本地服务器(localhost),登录用户名是root,有密码就加
                string conStr = "server=localhost;user=root;database=Liwker;password=1110";
    
                // 定义一个数据库连接对象con,可以理解它是连接程序连接数据库的通道
                // 这里表明用上面的连接串来建立与目标数据库的连接
                MySqlConnection con = new MySqlConnection(conStr);
    
                // 连接到数据库,即通常所说的打开数据库
                // 注意如果运行时在这里报错,要么是服务器没启动
                // 要么就是前面的 conStr中的连接信息写错了!
                con.Open();
    
                // 定义一个S0L命令对象,用于存储给服务器发送的SQL命令及参数等信息
                MySqlCommand cmd = new MySqlCommand();
    
                // 该SQL命令对象通过con连接到我们的数据库
                cmd.Connection = con;
    
                // 该SQL命令对象将向服务器发送命令字符串,当然可以使用存储过程等其它类型
                cmd.CommandType = System.Data.CommandType.Text;
    
                // 编制将要执行的SQL命令,这里命令的功能是随机取回一名学生的姓名和性别
                cmd.CommandText = "select * from student order by rand() limit 1;";
    
                // 定义一个基于cmd的数据适配器,它专用于接收cmd命令执行后的结果
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
    
                // 定义一个数据集,相当于表的集合, 用于接收SQL命令对象执行后的结果
                DataSet ds = new DataSet();
    
                // 用适配器执行命令来填充ds数据集,即将取回的数据装入ds
                adapter.Fill(ds);   // 这个方法是有返回值的,返回装入的行数
    
                // 前面的SQL命令成功取回 学生的信息后会放入ds的tables[0]表的rows[0]行
                // 没有的话,则tables[0]表的rows的行数为0
                if (ds.Tables[0].Rows.Count > 0)
                {
                    System.Console.WriteLine("学号: {0}", ds.Tables[0].Rows[0]["学号"]);
                    // 显示返回的姓名
                    System.Console.WriteLine("姓名: {0}", ds.Tables[0].Rows[0]["姓名"]);
                    // 显示返回的性别
                    System.Console.WriteLine("性别: {0}", ds.Tables[0].Rows[0]["性别"]);
                    System.Console.WriteLine("年龄: {0}", ds.Tables[0].Rows[0]["年龄"]);
                    System.Console.WriteLine("系别: {0}", ds.Tables[0].Rows[0]["系别"]);
                }
                else 
                {
                    System.Console.WriteLine("目前还没有学生!");
                }
    
                // 命令用完了,记得关闭连接,以便服务器更好地为其它连接服务
                con.Close();
            }
    

    结果

    image-20201207195923638

    2.删除学生

    代码

    // 通过学号删除一个学生
            static void delOne()
            {
                string who; // 存储查找的学号
                Console.Write("删除者学号:");    //输出提示信息
                who = Console.ReadLine();   //接受键盘输入
    
                // 任何数据库操作,其连接数据库以及SQL命令的准备都是一样的,所以可以直接用下面的
                string conStr = "server=localhost;user=root;database=Liwker;password=1110";
                MySqlConnection con = new MySqlConnection(conStr);
                con.Open();
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection = con;
                cmd.CommandType = System.Data.CommandType.Text;
    
                // 编辑发出给服务器的删除学生的SQL命令,其中@xh是一个参数
                cmd.CommandText = "delete from student where 学号=@xh";
    
                //提供命令所需要的参数,这里提供刚才输入的学号
                cmd.Parameters.AddWithValue("@xh", who);
    
                //非查询类的SQL命令的执行用以下方法,返回1 代表成功,0则失败
                int r = cmd.ExecuteNonQuery();
                if(r == 1)
                {
                    System.Console.WriteLine("删除成功!");
                }
                else
                {
                    System.Console.WriteLine("删除失败,也可能是根本没有此人!");
                }
    
                // 命令用完了,记得关闭连接,以便服务器更好地为其它连接服务
                con.Close();
            }
    
            //通过学号查询一个学生的信息
            static void Find()
            {
                string who;
                Console.Write("请输入学号查询:");
                who = Console.ReadLine();
    
                string conStr = "server=localhost;user=root;database=Liwker;password=1110";    // 连接数据库的字符串
                MySqlConnection con = new MySqlConnection(conStr);  // 定义一个数据库新链接
                con.Open(); // 打开数据库
    
                MySqlCommand cmd = new MySqlCommand();  // 定义一个新SQL命令
                cmd.Connection = con;   // SQL命令链接到数据库
                cmd.CommandType = System.Data.CommandType.Text; // 发送命令字符串
                cmd.CommandText = "select * from student where 学号=@xh;";    // 写入SQL命令字符串
                cmd.Parameters.AddWithValue("@xh", who);    // 替换参数
    
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);   // 定义一个接受cmd对象执行结果的数据适配器
                DataSet ds = new DataSet();     // 定义一个接受SQL对象执行结果的数据集
                adapter.Fill(ds);   // 将适配器里的数据装入ds
                if (ds.Tables[0].Rows.Count > 0)
                {
                    System.Console.WriteLine("学号: {0}", ds.Tables[0].Rows[0]["学号"]);
                    System.Console.WriteLine("姓名: {0}", ds.Tables[0].Rows[0]["姓名"]);
                    System.Console.WriteLine("性别: {0}", ds.Tables[0].Rows[0]["性别"]);
                    System.Console.WriteLine("年龄: {0}", ds.Tables[0].Rows[0]["年龄"]);
                    System.Console.WriteLine("系别: {0}", ds.Tables[0].Rows[0]["系别"]);
                }
                else
                {
                    System.Console.WriteLine("查无此人!");
                }
                con.Close();
            }
    

    结果

    image-20201207202410347

    3.查询所有学生信息

    代码

    // 查询所有学生的信息
            static void showAll()
            {
                string conStr = "server=localhost;user=root;database=Liwker;password=1110";
                MySqlConnection con = new MySqlConnection(conStr);
                con.Open();
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection = con;
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.CommandText = "select * from student;";
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                adapter.Fill(ds);
    
                // 利用循环来遍历所有的行(学生)
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    System.Console.WriteLine("学号: {0}", ds.Tables[0].Rows[i]["学号"]);
                    System.Console.WriteLine("姓名: {0}", ds.Tables[0].Rows[i]["姓名"]);
                    System.Console.WriteLine("性别: {0}", ds.Tables[0].Rows[i]["性别"]);
                    System.Console.WriteLine("年龄: {0}", ds.Tables[0].Rows[i]["年龄"]);
                    System.Console.WriteLine("系别: {0}", ds.Tables[0].Rows[i]["系别"]);
                    System.Console.WriteLine("
    ");
                }
    
                con.Close();
            }
    

    结果

    image-20201207202515284

    4.查询单个学生

    代码

    //通过学号查询一个学生的信息
            static void Find()
            {
                string who;
                Console.Write("请输入学号查询:");
                who = Console.ReadLine();
    
                string conStr = "server=localhost;user=root;database=Liwker;password=1110";    // 连接数据库的字符串
                MySqlConnection con = new MySqlConnection(conStr);  // 定义一个数据库新链接
                con.Open(); // 打开数据库
    
                MySqlCommand cmd = new MySqlCommand();  // 定义一个新SQL命令
                cmd.Connection = con;   // SQL命令链接到数据库
                cmd.CommandType = System.Data.CommandType.Text; // 发送命令字符串
                cmd.CommandText = "select * from student where 学号=@xh;";    // 写入SQL命令字符串
                cmd.Parameters.AddWithValue("@xh", who);    // 替换参数
    
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);   // 定义一个接受cmd对象执行结果的数据适配器
                DataSet ds = new DataSet();     // 定义一个接受SQL对象执行结果的数据集
                adapter.Fill(ds);   // 将适配器里的数据装入ds
                if (ds.Tables[0].Rows.Count > 0)
                {
                    System.Console.WriteLine("学号: {0}", ds.Tables[0].Rows[0]["学号"]);
                    System.Console.WriteLine("姓名: {0}", ds.Tables[0].Rows[0]["姓名"]);
                    System.Console.WriteLine("性别: {0}", ds.Tables[0].Rows[0]["性别"]);
                    System.Console.WriteLine("年龄: {0}", ds.Tables[0].Rows[0]["年龄"]);
                    System.Console.WriteLine("系别: {0}", ds.Tables[0].Rows[0]["系别"]);
                }
                else
                {
                    System.Console.WriteLine("查无此人!");
                }
                con.Close();
            }
    

    结果

    image-20201207202442361

    5.新增一个学生

    方法一

    // 新增学生(方法一)
            // 有点缺陷,因为学号属性是固定的5个字符,这里就用了 if 来判断比较(所以查出来的有空格)
            // 例如:输入“S02”是找不到的,必须输入“S02  ”
            static void addOne()
            {
                string xh, name, sex, age, xb, sg;  // 声明接收学生信息的不同字符串
    
                Console.Write("新增者
    学号:");
                xh = Console.ReadLine();    // 先输入学号,以便判断是否有重复
    
                // 连接数据库
                string conStr = "server=localhost;user=root;database=Liwker;password=1110";
                MySqlConnection con = new MySqlConnection(conStr);
                con.Open();
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection = con;
                cmd.CommandType = System.Data.CommandType.Text;
    
                // 先获取已有的学生的学号
                cmd.CommandText = "select 学号 from student";
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                adapter.Fill(ds);
    
                // 学号重复判断
                for(int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    if (xh == (string)ds.Tables[0].Rows[i]["学号"])   //加string强制转换
                    {
                        Console.Write("此学号已存在,请重新输入:
    ");
                        xh = Console.ReadLine();
                        i = -1;
                    }
                }
    
                Console.Write("姓名:");
                name = Console.ReadLine();
    
                Console.Write("性别:");
                sex = Console.ReadLine();
    
                Console.Write("年龄:");
                age = Console.ReadLine();
    
                Console.Write("系别:");
                xb = Console.ReadLine();
    
                Console.Write("身高:");
                sg = Console.ReadLine();
    
                // 定义SQL插入命令
                cmd.CommandText = "insert into student values(@xh,@name,@sex,@age,@xb,@sg)";
                cmd.Parameters.AddWithValue("@xh", xh);
                cmd.Parameters.AddWithValue("@name", name);
                cmd.Parameters.AddWithValue("@sex", sex);
                cmd.Parameters.AddWithValue("@age", age);
                cmd.Parameters.AddWithValue("@xb", xb);
                cmd.Parameters.AddWithValue("@sg", sg);
                int r = cmd.ExecuteNonQuery();  // 非查询类SQL命令的返回(0 或 1)
                if (r == 1)
                {
                    System.Console.WriteLine("新增成功!");
                }
                else
                {
                    System.Console.WriteLine("新增失败!");
                }
    
                con.Close();
            }
    

    方法二

    // 新增学生(方法二)
            // 此方法就不存在空格问题
            // 每输入学号就会运行SQL查看有没有重复的
            static void addOne1()
            {
                string xh, name, sex, age, xb, sg;
                int f = 0;  // 定义一个标志,以便后面判断重复
    
                Console.Write("新增者
    学号:");
                xh = Console.ReadLine();
    
                // 连接数据库
                string conStr = "server=localhost;user=root;database=Liwker;password=1110";
                MySqlConnection con = new MySqlConnection(conStr);
                con.Open();
    
                // 学号重复判断
                do
                {
                    // 先来判断是否有重复
                    if (f != 0)
                    {
                        Console.Write("此学号已存在,请重新输入:
    ");
                        xh = Console.ReadLine();
                    }
                    // 定义一个新的SQL命令
                    MySqlCommand cmd1 = new MySqlCommand();
                    cmd1.Connection = con;
                    cmd1.CommandType = System.Data.CommandType.Text;
    
                    // 定义查询这个学号是否重复的SQL命令
                    cmd1.CommandText = "select * from student where 学号=@xh";
                    cmd1.Parameters.AddWithValue("@xh", xh);
                    MySqlDataAdapter adapter = new MySqlDataAdapter(cmd1);
                    DataSet ds = new DataSet();
                    f = adapter.Fill(ds);   // f接受行数,0为没有,n为有n行数据
                } while (f > 0);    // 一直循环到没有重复为止
    
    
                Console.Write("姓名:");
                name = Console.ReadLine();
    
                Console.Write("性别:");
                sex = Console.ReadLine();
    
                Console.Write("年龄:");
                age = Console.ReadLine();
    
                Console.Write("系别:");
                xb = Console.ReadLine();
    
                Console.Write("身高:");
                sg = Console.ReadLine();
    
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection = con;
                cmd.CommandType = System.Data.CommandType.Text;
                // 定义SQL插入命令
                cmd.CommandText = "insert into student values(@xh,@name,@sex,@age,@xb,@sg)";
                cmd.Parameters.AddWithValue("@xh", xh);
                cmd.Parameters.AddWithValue("@name", name);
                cmd.Parameters.AddWithValue("@sex", sex);
                cmd.Parameters.AddWithValue("@age", age);
                cmd.Parameters.AddWithValue("@xb", xb);
                cmd.Parameters.AddWithValue("@sg", sg);
                int r = cmd.ExecuteNonQuery();  // 非查询类SQL命令的返回(0 或 1)
                if (r == 1)
                {
                    System.Console.WriteLine("
    新增成功!");
                }
                else
                {
                    System.Console.WriteLine("
    新增失败!");
                }
    
                con.Close();
            }
    

    结果

    image-20201207202612467

  • 相关阅读:
    锁定/解锁账户BAPI
    ME5A报表增强
    PS 独立集中标识下修改项目采购类型增强
    生产版本BAPI
    生产订单工艺路线修改
    销售订单BAPI增强
    Office RTF远程模板注入
    CVE20211732 LPE漏洞分析
    C/C++ Qt 数据库与ComBox多级联动
    C/C++ Qt 数据库SqlRelationalTable关联表
  • 原文地址:https://www.cnblogs.com/moon3/p/14520291.html
Copyright © 2020-2023  润新知