C#连接数据库初学笔记
打开解决方案,首先添加MySQL文件目录下的Mysql.data的引用,写入以下代码:
此脚本最后会打印出要查询的表里的所有数据,要保证数据库名,和用户名密码都正确才可以,不然会报错
查询
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
namespace test
{
class Program
{
static void Main(string[] args)
{
//服务器地址,端口号,数据库名,用户名,密码
string connect = "server=127.0.0.1;port=3306;database=sikidb;user=root;password=zzzzz;";
MySqlConnection con = new MySqlConnection(connect); //开始跟数据库建立连接
try
{
con.Open();//首先打开链接
string sqlCmd = "select * from users";//查询整个表(SQL命令语句,不能写错,否则执行不了)
//select id,username,registerdate from users 查询这个表里指定的列
MySqlCommand cmd = new MySqlCommand(sqlCmd, con); //1:执行命令的语句,2:打开的通道连接
//cmd.ExecuteNonQuery();//执行插入、删除操作
//cmd.ExecuteScalar();//读取数据,和cmd.ExecuteReader()的区别是,这个返回单个的值
//cmd.ExecuteReader();//读取数据,返回MySqlDataReader类型
MySqlDataReader dataReader = cmd.ExecuteReader();
//dataReader.Read();//读取表里的下一行数据,读取到返回true,没有下一行数据返回false
int a = 0;
while (dataReader.Read())
{
a++;
Console.WriteLine(dataReader[0].ToString()+" " + dataReader[1].ToString()+ " " + dataReader[2].ToString());
if (dataReader[1].ToString() == "wer") //测试,找到这个叫wer的人在第几行数据
{
Console.WriteLine($"找到这个人了,在第{a}行数据");
}
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
con.Close();
}
Console.ReadKey();
}
}
}
插入数据
static void InsertShuJu()
{
//服务器地址,端口号,数据库名,用户名,密码
string connect = "server=127.0.0.1;port=3306;database=sikidb;user=root;password=zzzzz;";
MySqlConnection con = new MySqlConnection(connect); //开始跟数据库建立连接
try
{
con.Open();//首先打开链接
string name = "aaa";
string sqlCmd = "insert into users(username,password,registerdate) values('"+name+"','000','"+DateTime.Now+"')";//插入自定义用户名,密码,和当前时间
MySqlCommand cmd = new MySqlCommand(sqlCmd, con); //1:执行命令的语句,2:打开的通道连接
//cmd.ExecuteNonQuery();//执行插入、删除操作
int result = cmd.ExecuteNonQuery();//返回值是数据库中受影响的数据行数,现在是插入一行,所以返回值会是1
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
con.Close();
}
}
更新数据
把命令改掉就可以了,undate指令可以更新数据,下面的命令意思是把id为11的用户名密码替换为kkkk,666
string sqlCmd = "update users set username='kkkk',password='666' where id='11'";
删除数据
把命令改掉就可以了,此命令意思是删除id=10的那条数据
string sqlCmd = "delete from users where id='10'";
拓展
另一种读取数据的方式:
指定读取的列的名字就可以了
Console.WriteLine(dataReader.GetInt32("id") + " " + dataReader.GetString("username") + " " + dataReader.GetString("password"));
实验 验证用户名密码是否存在
//验证用户名密码是否存在
static bool Verification(string username,string password)
{
//服务器地址,端口号,数据库名,用户名,密码
string connect = "server=127.0.0.1;port=3306;database=sikidb;user=root;password=zzzzz;";
MySqlConnection con = new MySqlConnection(connect); //开始跟数据库建立连接
try
{
con.Open();//首先打开链接
string sqlCmd = "select * from users where username = @data1 and password = @data2";
MySqlCommand cmd = new MySqlCommand(sqlCmd, con);
cmd.Parameters.AddWithValue("data1", username);
cmd.Parameters.AddWithValue("data2", password);
MySqlDataReader dataReader = cmd.ExecuteReader();
if (dataReader.Read())
{
return true;
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
con.Close();
}
return false;
}
然后再主函数里做测试
static void Main(string[] args)
{
//Reader();
//InsertShuJu();
//Update();
//deleteShuJu();
bool user = Verification("wer", "000"); //检测这个账号密码
if (user)
{
Console.WriteLine("用户存在,允许登录");
}
else
{
Console.WriteLine("用户不存在,请重新输入账号密码");
}
Console.ReadKey();
}
完整代码
以下是整个 代码连接MySQL数据库的增删改查,检测用户账号密码是否存在的脚本
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
namespace test
{
class Program
{
static void Main(string[] args)
{
//Reader();
//InsertShuJu();
//Update();
//deleteShuJu();
bool user = Verification("wer", "000");
if (user)
{
Console.WriteLine("用户存在,允许登录");
}
else
{
Console.WriteLine("用户不存在,请重新输入账号密码");
}
Console.ReadKey();
}
//验证用户名密码是否存在
static bool Verification(string username,string password)
{
//服务器地址,端口号,数据库名,用户名,密码
string connect = "server=127.0.0.1;port=3306;database=sikidb;user=root;password=zzzzz;";
MySqlConnection con = new MySqlConnection(connect); //开始跟数据库建立连接
try
{
con.Open();//首先打开链接
string sqlCmd = "select * from users where username = @data1 and password = @data2";
MySqlCommand cmd = new MySqlCommand(sqlCmd, con);
cmd.Parameters.AddWithValue("data1", username);
cmd.Parameters.AddWithValue("data2", password);
MySqlDataReader dataReader = cmd.ExecuteReader();
if (dataReader.Read())
{
return true;
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
con.Close();
}
return false;
}
static void Reader() //查询数据
{
//服务器地址,端口号,数据库名,用户名,密码
string connect = "server=127.0.0.1;port=3306;database=sikidb;user=root;password=zzzzz;";
MySqlConnection con = new MySqlConnection(connect); //开始跟数据库建立连接
try
{
con.Open();//首先打开链接
string sqlCmd = "select * from users";//查询整个表(SQL命令语句,不能写错,否则执行不了)
//select id,username,registerdate from users 查询这个表里指定的列
MySqlCommand cmd = new MySqlCommand(sqlCmd, con); //1:执行命令的语句,2:打开的通道连接
//cmd.ExecuteNonQuery();//执行插入、删除操作
//cmd.ExecuteScalar();//读取数据,和cmd.ExecuteReader()的区别是,这个返回单个的值
//cmd.ExecuteReader();//读取数据,返回MySqlDataReader类型
MySqlDataReader dataReader = cmd.ExecuteReader();
//dataReader.Read();//读取表里的下一行数据,读取到返回true,没有下一行数据返回false
int a = 0;
while (dataReader.Read())
{
a++;
Console.WriteLine(dataReader.GetInt32("id") + " " + dataReader.GetString("username") + " " + dataReader.GetString("password"));
if (dataReader[1].ToString() == "wer") //测试,找到这个叫wer的人在第几行数据
{
Console.WriteLine($"找到这个人了,在第{a}行数据");
}
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
con.Close();
}
}
static void InsertShuJu() //增加数据
{
//服务器地址,端口号,数据库名,用户名,密码
string connect = "server=127.0.0.1;port=3306;database=sikidb;user=root;password=zzzzz;";
MySqlConnection con = new MySqlConnection(connect); //开始跟数据库建立连接
try
{
con.Open();//首先打开链接
string name = "aaa";
//插入自定义用户名,密码,和当前时间
string sqlCmd = "insert into users(username,password,registerdate) values('"+name+"','000','"+DateTime.Now+"')";
MySqlCommand cmd = new MySqlCommand(sqlCmd, con); //1:执行命令的语句,2:打开的通道连接
//cmd.ExecuteNonQuery();//执行插入、删除操作
int result = cmd.ExecuteNonQuery();//返回值是数据库中受影响的数据行数,现在是插入一行,所以返回值会是1
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
con.Close();
}
}
static void Update() //更新某一条指定数据
{
//服务器地址,端口号,数据库名,用户名,密码
string connect = "server=127.0.0.1;port=3306;database=sikidb;user=root;password=zzzzz;";
MySqlConnection con = new MySqlConnection(connect); //开始跟数据库建立连接
try
{
con.Open();//首先打开链接
string sqlCmd = "update users set username='kkkk',password='666' where id='11'";
MySqlCommand cmd = new MySqlCommand(sqlCmd, con); //1:执行命令的语句,2:打开的通道连接
//cmd.ExecuteNonQuery();//执行插入、删除操作
int result = cmd.ExecuteNonQuery();//返回值是数据库中受影响的数据行数,现在是插入一行,所以返回值会是1
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
con.Close();
}
}
static void deleteShuJu() //删除某一条指定数据
{
//服务器地址,端口号,数据库名,用户名,密码
string connect = "server=127.0.0.1;port=3306;database=sikidb;user=root;password=zzzzz;";
MySqlConnection con = new MySqlConnection(connect); //开始跟数据库建立连接
try
{
con.Open();//首先打开链接
string sqlCmd = "delete from users where id='10'";
MySqlCommand cmd = new MySqlCommand(sqlCmd, con); //1:执行命令的语句,2:打开的通道连接
//cmd.ExecuteNonQuery();//执行插入、删除操作
int result = cmd.ExecuteNonQuery();//返回值是数据库中受影响的数据行数,现在是插入一行,所以返回值会是1
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
con.Close();
}
}
}
}
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!