准备工作
在Visual Studio中新建一个C#的控制台应用程序。
确保后台已经启用了MySQL57服务。
在MySQL的安装路径下找到DLL,默认位置是 C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.dll 。
更多写代码连接MySQL的方法(通过MySQLConnector连接器),参考文档 C:\Program Files (x86)\MySQL\Connector.NET 6.9\Documentation\ConnectorNET.chm 。在文档的Users Guide-Programming中有代码案例。
把MySql.Data.dll引入项目中。v4.5表示.NetFramework框架的版本号,一定要保证使用的DLL与项目的.NetFramework版本一致,否则运行时报错找不到DLL,报错如下:
>F:\Learning\CSharpConnectMySQL\CSharpConnectMySQL\Program.cs(,,,): error CS0246: The type or namespace name 'MySql' could not be found (are you missing a using directive or an assembly reference?)
测试增删改查
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace CSharpConnectMySQL
{
class Program
{
static void Main(string[] args)
{
// 服务器地址;端口号;数据库;用户名;密码
string connectStr = "server=127.0.0.1;port=3306;database=mygamedb;user=root;password=root"; // 用户名和密码在MySQL定义的
// 创建连接
MySqlConnection conn = new MySqlConnection(connectStr); try
{
// 打开连接
conn.Open();
Console.WriteLine("已经建立连接"); //Query(conn); // 测试查询
//Insert(conn); // 测试插入
//Update(conn); // 测试更新
//Delete(conn); // 测试删除
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
// 关闭连接
conn.Close();
Console.WriteLine("数据库已关闭");
} Console.ReadKey();
} /// <summary>
/// 查询
/// </summary>
/// <param name="conn"></param>
private static void Query(MySqlConnection conn)
{
// 创建命令
string sql = "select * from users";
MySqlCommand cmd = new MySqlCommand(sql, conn);
// 读取数据
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read()) // true表示能读取该行数据
{
// 方式一:访问数组
Console.WriteLine(reader[].ToString() + reader[].ToString()); // reader[0]是读出来的第一列属性
// 方式二:根据列数
Console.WriteLine(reader.GetInt32(0));
// 方式三:根据列名
Console.WriteLine(reader.GetInt32("user_id"));
}
} /// <summary>
/// 插入,增加数据
/// </summary>
/// <param name="conn"></param>
private static void Insert(MySqlConnection conn)
{
// 创建命令
string sql = "insert into user(user_name, user_pwd) values('asdAa','2345')";
MySqlCommand cmd = new MySqlCommand(sql, conn);
// 添加一条记录
int result = cmd.ExecuteNonQuery();
Console.WriteLine("数据库中受影响的行数 = " + result);
} /// <summary>
/// 更新,改数据
/// </summary>
/// <param name="conn"></param>
private static void Update(MySqlConnection conn)
{
// 创建命令
string sql = "update user set user_name = 'newName', user_pwd = '66777' where user_id = '3'";
MySqlCommand cmd = new MySqlCommand(sql, conn);
// 更新记录
int result = cmd.ExecuteNonQuery();
Console.WriteLine("数据库中受影响的行数 = " + result);
} /// <summary>
/// 删除数据
/// </summary>
/// <param name="conn"></param>
private static void Delete(MySqlConnection conn)
{
// 创建命令
string sql = "delete from user where user_id = '4'";
MySqlCommand cmd = new MySqlCommand(sql, conn);
// 删除记录
int result = cmd.ExecuteNonQuery();
Console.WriteLine("数据库中受影响的行数 = " + result);
}
}
}
传参拼接SQL语句
/// <summary>
/// 验证用户名和密码
/// </summary>
/// <param name="conn"></param>
/// <param name="userName"></param>
/// <param name="password"></param>
/// <returns></returns>
private static bool Verify(MySqlConnection conn, string userName, string password)
{
// 方式一:组拼sql
//string sql = "select * from user where user_name = '" + userName + "' and user_pwd = '" + password + "'";
//MySqlCommand cmd = new MySqlCommand(sql, conn); // 方式二:参数标记
string sql = "select * from user where user_name = @p1 and user_pwd = @p2";
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.Parameters.AddWithValue("p1", userName); // 这里会根据输入的类型,自动判断要不要加单引号''
cmd.Parameters.AddWithValue("p2", password); MySqlDataReader reader = cmd.ExecuteReader();
if (reader.Read()) // 要么查出一条数据,要么0条。
{
return true;
} return false;
}