利用VS2017 编写C#程序实现与MySQL链接(详细教程)
利用VS2017 编写C#程序实现与MySQL链接(详细教程)
首先,我是一个C#小白,为了完成毕设 不得不去学C#,与数据库链接是为了处理数据。但在网上找了很多资料,费了不少时间,都没有一个详细的教程,在我弄好之后,我决定把这些分享给大家。
代码
话不多说,先来代码
</>
using System;
using System.Data;
using MySql.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.Text.RegularExpressions;
namespace 空项目2
{
public class MySQL_con
{
public static void Main()
{
MySqlConnection mysql = getconn();
String sqlSearch = "", sqlInsert = "", sqlUpdate = "", sqlDelete = "";
while (true)
{
//获取命令
SEL:
Menu();
int x;
try
{
x = Convert.ToInt32(Console.ReadLine());
}
catch
{
goto SEL;
}
if(x<0&&x>5)
goto SEL;
if(x== 0)
Environment.Exit(0);
Console.Write("\n请输入MySQL命令" + ":");
String n = Convert.ToString(Console.ReadLine());
switch (x)
{
case 1: sqlSearch = n; break;
case 2: sqlInsert = n; break;
case 3: sqlUpdate = n; break;
case 4: sqlDelete = n; break;
case 0: Environment.Exit(0); break;
default:goto SEL;
}
//string sqlTruncate = "truncate students";
//Console.Write("3"+sqlSearch);
try
{
MySqlCommand mysqlselect = getsqlCommand(sqlSearch, mysql);
MySqlCommand mysqlinsert = getsqlCommand(sqlInsert, mysql);
MySqlCommand mysqlupdate = getsqlCommand(sqlUpdate, mysql);
MySqlCommand mysqldelete = getsqlCommand(sqlDelete, mysql);
//MySqlCommand mysqlTruncate = getsqlCommand(sqlTruncate, mysql);
mysql.Open();
//输出数据库版本和信息
//Console.WriteLine(mysql.ServerVersion + "n" + mysql.ConnectionString + "n" + mysql.Database + "n" + mysql.DataSource + "n");
//getTruncate(mysqlTruncate); //清空表
//InsertTestData(mysql); //插入测试数据
getResult(mysqlselect);
Console.WriteLine();
//getDelete(mysqldelete);
//getInsert(mysqlinsert);
//getUpdate(mysqlupdate);
// getDelete(mysqldelete);
mysql.Close();
}
catch (MySqlException ex)
{
Console.Write(ex.Message);
}
}
Console.ReadLine();
}
//链接数据库
public static MySqlConnection getconn()
{
//string mysqlStr = "Database=student;Data Source = 192.168.1.0;User Id=root;password=123456;charset=gbk;port=3306";
string connString = "server=localhost;database=qqq;uid=root;pwd=123456";
//MySqlConnection conn = new MySqlConnection(connString);
MySqlConnection mysql = new MySqlConnection(connString);
return mysql;
}
public static void Menu()
{
Console.Write("*************************************\n");
Console.Write("**************1、select**************\n");
Console.Write("**************2、insert**************\n");
Console.Write("**************3、delete**************\n");
Console.Write("**************4、update**************\n");
Console.Write("*************************************\n");
Console.Write("***************请选择:***************\n");
}
//获取并判断命令
//获得一个MySQL命令
public static MySqlCommand getsqlCommand(string sql, MySqlConnection mysql)
{
MySqlCommand mysqlcommand = new MySqlCommand(sql, mysql);
return mysqlcommand;
}
//获取数据库全部数据
public static void getResult(MySqlCommand mysqlcommand)
{
Console.WriteLine(mysqlcommand);
MySqlDataReader reader = mysqlcommand.ExecuteReader();
try
{
while (reader.Read())
{
if (reader.HasRows)
{
Console.WriteLine(" 姓名:" + reader.GetString(1) + " 编号:" + reader.GetString(0) + " 地址:" + reader.GetString(2) + " 电话:" + reader.GetInt32(reader.GetOrdinal("phone")) + " 年龄:" + reader.GetInt32(reader.GetOrdinal("age")));
}
}
}
catch (MySqlException ex)
{
Console.WriteLine("查询失败!" + ex.Message);
}
finally
{
reader.Close();
}
}
//更新
public static void getUpdate(MySqlCommand mysqlcommand)
{
try
{
mysqlcommand.ExecuteNonQuery();
}
catch (MySqlException ex)
{
string message = ex.Message;
Console.WriteLine("修改数据失败! " + message);
}
}
//删除
public static void getDelete(MySqlCommand mysqlcommand)
{
try
{
mysqlcommand.ExecuteNonQuery();
}
catch (MySqlException ex)
{
string message = ex.Message;
Console.WriteLine("删除数据失败! " + message);
}
}
//插入
public static void getInsert(MySqlCommand mysqlcommand)
{
try
{
mysqlcommand.ExecuteNonQuery();
}
catch (MySqlException ex)
{
string message = ex.Message;
Console.WriteLine("插入数据失败! " + message);
}
}
//清空表
public static void getTruncate(MySqlCommand mysqlcommand)
{
try
{
mysqlcommand.ExecuteNonQuery();
}
catch (MySqlException ex)
{
string message = ex.Message;
Console.WriteLine("清空表失败! " + message);
}
}
//插入测试数据
public static void InsertTestData(MySqlConnection mysql)
{
int i = 0;
while (i++ != 10)
{
string cmd12 = "insert into students(stu_id,stu_name,address,phone,age) values('099','李白','南极',12344615,20)";
MySqlCommand mycmd = new MySqlCommand(cmd12, mysql);
if (mycmd.ExecuteNonQuery() > 0)
{
Console.WriteLine("数据插入成功!{0}", i);
}
}
}
}
}
</>
具体的步骤
1.当然,要创建C#程序当然要打开vs2017(当然,这是废话)
- 点击右上角的文件,新建,项目,选择Windows桌面下的空项目,然后在下面起好名称,点击确定。(就是下面这个雅子)
3.确定了之后,首先点击空项目,右键新建项,点击添加,选择新建项,选择类,点击添加。
4.然后系统会自动打开新建的程序,也就是你创建的类。但在编写代码之前还有一部工作要做,那就是把MySQL与C#链接的协议拿过来,也就是MySql.Data.dall。应用方法为,右击引用,点击添加引用,然后点击浏览,找到你下载的那个协议。默认路径为C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.19\Assemblies\v4.5.2。 然后点击添加,你会发现引用管理器-项目名这个框框里的协议前面打了一个对勾。如果你之前引用过这个协议的话,直接在协议前面点对勾就好了,点击下面的确定就好了。
下一步工作
好了,这下可以编写代码了。把我前面的代码复制,粘贴上去就好了。
但在这里有几点需要说明一下
- 记得应用协议
- 文件的名字和public class 后面的名字要一致,namespace后面的名字是项目名字(不要随便改)。
- 在第95行,我的数据控名为qqq,密码为123456,你记得改 ,要不然连接不上.
- 数据库的增删改查内容要修改
- 对于reader.GetString(1),数字表示第几个输出位置,你试试就懂了
- reader.GetInt32(reader.GetOrdinal(“phone”)),对于这句代码我本来用的是reader.GetInt32(11),因为我设置的电话号码长度为11位,但是报错,在我查询之后改用了这个方法,直接获取phone处的值,管他多少位。
- 暂时就是这个样子,大家要加油哦。不会的可以留言,我会留意的(如果我会的话,hhh)。
参考文献
https://blog.csdn.net/Sayesan/article/details/86702046