数据库应用开发一、vs

  • A+
所属分类:.NET技术
摘要

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

今天数据库实验是“掌握数据库应用开发的一般方法”,开发环境是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)                  {                      }               } } 

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

数据库应用开发一、vs

三、实验

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();         } 

结果

数据库应用开发一、vs

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();         } 

结果

数据库应用开发一、vs

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("n");             }              con.Close();         } 

结果

数据库应用开发一、vs

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();         } 

结果

数据库应用开发一、vs

5.新增一个学生

方法一

// 新增学生(方法一)         // 有点缺陷,因为学号属性是固定的5个字符,这里就用了 if 来判断比较(所以查出来的有空格)         // 例如:输入“S02”是找不到的,必须输入“S02  ”         static void addOne()         {             string xh, name, sex, age, xb, sg;  // 声明接收学生信息的不同字符串              Console.Write("新增者n学号:");             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("此学号已存在,请重新输入:n");                     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("新增者n学号:");             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("此学号已存在,请重新输入:n");                     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("n新增成功!");             }             else             {                 System.Console.WriteLine("n新增失败!");             }              con.Close();         } 

结果

数据库应用开发一、vs