通过MySqlConnection类与MySql建立连接
- 建立连接
MySqlConnection conn = new MySqlConnection(“server=服务器名称;port=端口号;database=数据库名称;user=用户名;password=密码”); - 开启连接
conn.Open(); - 关闭连接
conn.Close();
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
namespace CSharp直接连接MySQL
{
class Program
{
static void Main(string[] args)
{
//进行连接的信息参数:server服务器地址,port端口号,database数据库名,user用户名,password密码
string connectStr = "server=localhost;port=3306;database=mygamedb;user=root;password=123";
//与数据库建立连接
MySqlConnection conn = new MySqlConnection(connectStr);
try
{
//开启连接
conn.Open();
}
catch (Exception e)
{
Console.Write(e.ToString());
}
finally
{
//关闭连接
conn.Close();
}
Console.Write("已经建立连接" + conn);
Console.ReadKey();
}
}
}
使用MySqlCommand对数据库进行增删改查
》MySqlCommand cmd = new MySqlCommand(sql, conn);
sql:要执行的sql语句
conn:和数据库建立好的连接
1.MySqlDataReader reader = cmd.ExecuteReader(); //执行一些查询语句
2.cmd.ExecuteNonQuery(); //执行插入 删除等没有结果返回的操作
3.cmd.ExecuteScalar(); //执行查询,返回单个值,查询单个值时优先使用
执行查询命令cmd.ExecuteReader();
》利用已经建立连接的conn进行数据库查询操作:
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader reader = cmd.ExecuteReader();
注意:查询多条语句用cmd.ExecuteReader();
查询一条语句用cmd.ExecuteScalar();
String sql = "select * from users";
MySqlCommand cmd = new MySqlCommand(sql, conn);
//MySqlDataReader reader = cmd.ExecuteReader(); //执行一些查询语句
//cmd.ExecuteNonQuery(); //执行插入 删除
//cmd.ExecuteScalar(); //执行查询,返回单个值
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[0].ToString() + "," + reader[1].ToString() + "," + reader[2].ToString());
}
执行修改和删除命令cmd.ExecuteNonQuery();
int result = cmd.ExecuteNonQuery();
修改或删除成功数据库中的数据,返回1;否则返回0.
//修改
string sql = "update users set username = 'cch',password = 'oop' where id = 4";
MySqlCommand cmd = new MySqlCommand(sql, conn);
int result = cmd.ExecuteNonQuery();
Console.WriteLine(result); //0或1
//删除
string sql = "delete from users where id = 6";
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.ExecuteNonQuery();
查询单个值cmd.ExecuteReader();
》ExecuteScalar这个方法是从数据库中检索单个值返回值是object类型, 必须用与它在数据库里存放的类型相同类型或者可以转换成的类型,
》 比如数据是nchar类型值为 “123” 就可以用(int)ExecuteScalar(), 如果数据是nchar类型值为 “abc”就不能用(int)ExecuteScalar(), 就得写string result = ExecuteScalar().ToString();
string sql = "select count(*) from users";
MySqlCommand cmd = new MySqlCommand(sql, conn);
object res = cmd.ExecuteScalar();
Console.WriteLine(res);
查询是其他取得数据的方式
reader.GetString(“username”)
reader.get类型(“字段名或者字段编号”);
string sql = "select * from users";
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
//Console.WriteLine("id=" + reader.GetInt32(0) + ",username ="+reader.GetString(1)+",password=" + reader.GetString(2));
Console.WriteLine("id=" + reader.GetInt32("id") + ",username =" + reader.GetString("username") + ",password=" + reader.GetString("password"));
给查询语句动态添加参数
string sql = “select count(*) from users where username = @username and password = @password”;
cmd.Parameters.AddWithValue(parameterName, value);
对要进行动态添加的参数变量前加一个‘@’符号,在sql语句执行前,使用cmd.Parameters.AddWithValue(parameterName, value);动态添加
》parameterName:动态添加的变量名
》value:动态添加的值
static bool Login(string username,string password){
string connectStr = "server=localhost;port=3306;database=mygamedb;user=root;password=123";
//与数据库建立连接
MySqlConnection conn = null;
object res = null;
string sql = "select count(*) from users where username = @username and password = @password";
try
{
conn = new MySqlConnection(connectStr);
conn.Open();
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.Parameters.Add("username", username);
cmd.Parameters.Add("password", password);
res = cmd.ExecuteScalar();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
conn.Close();
}
if (Convert.ToInt32(res) != 0)
{
return true; //登录成功返回true
}
else
{
return false; //登录失败,返回false
}
}
}
SQL中的一些函数
- AVG 函数
AVG 函数返回数值列的平均值。NULL 值不包括在计算中。
SQL AVG() 语法
SELECT AVG(column_name) FROM table_name - COUNT() 函数
COUNT() 函数返回匹配指定条件的行数。
SQL COUNT() 语法
COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):
SELECT COUNT(column_name) FROM table_name - SUM() 函数
SUM 函数返回数值列的总数(总额)。
SQL SUM() 语法
SELECT SUM(column_name) FROM table_name