2020-12-07

数据库应用开发一、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("\n");   }   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("新增者\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();  }

结果

image-20201207202612467









原文转载:http://www.shaoqun.com/a/496130.html

1号团:https://www.ikjzd.com/w/2263

auction:https://www.ikjzd.com/w/2311

feedback:https://www.ikjzd.com/w/159


今天数据库实验是"掌握数据库应用开发的一般方法",开发环境是vs(我这里用的是19版)一、准备操作环境:win7以上DBMS:MySQL5.5开发环境:vs19(12及以上都可以)二、建立工程项目新建工程后默认模板usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Thr
heap:heap
好东东网:好东东网
eBay经营范围有哪些?:eBay经营范围有哪些?
仰光中国文化中心用"云活动"助缅战"疫":仰光中国文化中心用"云活动"助缅战"疫"
PPCSCOPE:PPCSCOPE

No comments:

Post a Comment