复制即用-c#-连接MySQL数据库及基础增删改查操作

声明

我很讨厌重复造轮子,所以将很基础的东西贴粗来,不要浪费大家时间.
所有方法简单粗暴,不一定是最好的实现方式,酌情选用及调整.

环境需求

1.(免币) MySql.Data.dll 点击下载
添加到引用即可:
在这里插入图片描述
2.mysql-installer-community-8.0.25.0
这个自己到官网下载安装即可,官网地址:
https://www.mysql.com/

实现代码

连接数据库和断开连接

private MySqlConnection conn;

/// <summary>
/// 开启连接
/// </summary>
public void ConnectIt()
{
    string connStr = "data source=localhost;database=world;user id=root;password=root;pooling=true;charset=utf8;";
    conn = new MySqlConnection();
    conn.ConnectionString = connStr;
    conn.Open();
    Console.WriteLine("连接已经成功!用完记得断开连接!");
}

/// <summary>
/// 关闭连接
/// </summary>
public void DisConnectIt()
{
    conn.Close();
    Console.WriteLine("连接已经断开!");
}

查询数据

/// <summary>
/// 查询多条项目
/// </summary>
public void SearchItAll()
{
    string searchStr = "select * from city where ID < 10";
    MySqlCommand cmd = new MySqlCommand(searchStr, conn);
    // 获取结果解析器
    MySqlDataReader reader = cmd.ExecuteReader();
    // 每一次循环都是一条查询到的数据
    while (reader.Read()) 
    {
        //输出第一列字段值
        Console.Write(reader.GetInt32(0) + "\t");

        //判断字段"username"是否为null,为null数据转换会失败
        if (!reader.IsDBNull(1))
        {
            //输出第二列字段值
            Console.Write(reader.GetString(1) + "\t");
        }
        //判断字段"password"是否为null,为null数据转换会失败
        if (!reader.IsDBNull(2))
        {
            //输出第三列字段值
            Console.Write(reader.GetString(2) + "\n");
        }
    }
    Console.WriteLine("查询已经结束!");
}

插入数据

/// <summary>
/// 插入数据
/// </summary>
public void InsertIt()
{
    string searchStr = "Insert into city values (6002,'bigShit','IDN','EastFather',93494)";
    MySqlCommand cmd = new MySqlCommand(searchStr, conn);
    cmd.ExecuteNonQuery();
    Console.WriteLine("插入数据结束!");
}

更新数据

/// <summary>
/// 更新一条数据
/// </summary>
public void UpdateIt()
{
    string searchStr = "update city set name='smallShit' where ID=6002";
    MySqlCommand cmd = new MySqlCommand(searchStr, conn);
    cmd.ExecuteNonQuery();
    Console.WriteLine("更新数据结束!");
}

删除数据

/// <summary>
/// 删除一条数据
/// </summary>
public void DeleteIt()
{
    string searchStr = "update city set name='smallShit' where ID=6002";
    MySqlCommand cmd = new MySqlCommand(searchStr, conn);
    cmd.ExecuteNonQuery();
    Console.WriteLine("更新数据结束!");
}

创建和删除表

/// <summary>
/// 创建一个表
/// </summary>
public void CreateTable()
{
    string searchStr = "create table player(id int(20) primary key, name varchar(40), memo TEXT)";
    MySqlCommand cmd = new MySqlCommand(searchStr, conn);
    cmd.ExecuteNonQuery();
    Console.WriteLine("创建数据库结束!");
}

/// <summary>
/// 删除一个表
/// </summary>
public void DropTable()
{
    string searchStr = "drop table player";
    MySqlCommand cmd = new MySqlCommand(searchStr, conn);
    cmd.ExecuteNonQuery();
    Console.WriteLine("删除数据库结束!");
}

表主键的添加和删除

/// <summary>
/// 表主键的添加和删除
/// </summary>
/// <param name="remove"></param>
public void AdjustKey(bool remove)
{
    string searchStr = "";
    if (remove)
    {
        // 注:ID这一列本就存在,只是升级为主键
        searchStr = "alter table city add primary key (ID)";
    }
    else
    {
        // 注:ID这一列依然存在,不会因为删除主键而消失
        // 如果主键存在自增,则无法直接删除主键,需要修改其属性 
        // alter table [table] modify [column] [type](len);
        searchStr = "alter table city drop primary key";
    }
    MySqlCommand cmd = new MySqlCommand(searchStr, conn);
    cmd.ExecuteNonQuery();
    Console.WriteLine("主键调整结束!");
}

表新增一列

/// <summary>
/// 给数据库表增加一列
/// </summary>
public void AddColumn()
{
    string searchStr = "alter table city add column funny varchar(50);";
    MySqlCommand cmd = new MySqlCommand(searchStr, conn);
    cmd.ExecuteNonQuery();
    Console.WriteLine("新增一列结束!");
}

表修改一列

/// <summary>
/// 修改表的一列属性
/// </summary>
public void ModifyColumn()
{
    string searchStr = "alter table city modify funny int(25)";
    MySqlCommand cmd = new MySqlCommand(searchStr, conn);
    cmd.ExecuteNonQuery();
    Console.WriteLine("列调整结束!");
}

补充

附 补充操作的表结构

在这里插入图片描述

数据库中NULL值的插入

/// <summary>
/// 插入数据(带null)
/// </summary>
public void InsertItWithNull(int bookId, String chapterName, String chapterContent, int chapterIndex)
{
    String now = DateTime.Now.ToString("yyyy-MM-dd");
    string searchStr = "Insert into chapters value(@id, @bookId, @chapterName, @chapterContent,@now, @chapterIndex)";
    MySqlCommand cmd = new MySqlCommand(searchStr, conn);
    cmd.Parameters.AddWithValue("@id", DBNull.Value); // 注意c#的null和数据库的null不同, 如果赋值null必须使用DBNull.Value 
    cmd.Parameters.AddWithValue("@bookId", bookId);
    cmd.Parameters.AddWithValue("@chapterName", chapterName);
    cmd.Parameters.AddWithValue("@chapterContent", chapterContent);
    cmd.Parameters.AddWithValue("@now", now);
    cmd.Parameters.AddWithValue("@chapterIndex", chapterIndex);
    cmd.ExecuteNonQuery();
}

数据库中自增主键的插入并获取

/// <summary>
/// 插入数据(插入带自增主键的数据,并返回自增数据id)
/// </summary>
public long InsertItReturnId(int bookId, String chapterName, String chapterContent, int chapterIndex)
{
    String now = DateTime.Now.ToString("yyyy-MM-dd");
    string searchStr = "Insert into chapters(book_id, chapter_name, chapter_content,update_date, chapter_index) " +
        "value(@bookId, @chapterName, @chapterContent,@now, @chapterIndex)";
    MySqlCommand cmd = new MySqlCommand(searchStr, conn);
    // 这里存在一个id参数是自增的,如果插入时不定义,系统会自动使其自增填充
    cmd.Parameters.AddWithValue("@bookId", bookId);
    cmd.Parameters.AddWithValue("@chapterName", chapterName);
    cmd.Parameters.AddWithValue("@chapterContent", chapterContent);
    cmd.Parameters.AddWithValue("@now", now);
    cmd.Parameters.AddWithValue("@chapterIndex", chapterIndex);
    cmd.ExecuteNonQuery();
    // 这个返回值就是自增值结果
    return cmd.LastInsertedId;
}

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
首先,你需要安装 MySQL Connector/NET,这是一个官方提供的 MySQL 数据库连接器,可以让你使用 C#MySQL 进行交互。 在 Visual Studio 中,你需要引用以下命名空间: ```csharp using MySql.Data.MySqlClient; ``` 接下来,我们可以创建一个用于连接数据库MySqlConnection 对象。在构造函数中,我们需要传入 MySQL 数据库连接字符串。 ```csharp MySqlConnection connection = new MySqlConnection("server=localhost;database=mydatabase;uid=myusername;password=mypassword;"); ``` 其中,server 表示 MySQL 服务器的地址,database 表示要连接数据库名称,uid 和 password 则是登录 MySQL 服务器的用户名和密码。 接下来,我们可以使用 MySqlCommand 对象来执行 SQL 命令。例如,以下代码会创建一个名为 `users` 的表。 ```csharp MySqlCommand command = new MySqlCommand("CREATE TABLE users (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), email VARCHAR(50), PRIMARY KEY(id))", connection); connection.Open(); command.ExecuteNonQuery(); connection.Close(); ``` 下面是一个实现增删改查的示例: ```csharp using System; using MySql.Data.MySqlClient; namespace MySqlTest { class Program { static void Main(string[] args) { string connectionString = "server=localhost;database=mydatabase;uid=myusername;password=mypassword;"; MySqlConnection connection = new MySqlConnection(connectionString); try { connection.Open(); // 添加一条记录 MySqlCommand insertCommand = new MySqlCommand("INSERT INTO users (name, email) VALUES ('张三', '[email protected]')", connection); insertCommand.ExecuteNonQuery(); // 查询记录 MySqlCommand selectCommand = new MySqlCommand("SELECT * FROM users", connection); MySqlDataReader reader = selectCommand.ExecuteReader(); while (reader.Read()) { Console.WriteLine("id: {0}, name: {1}, email: {2}", reader["id"], reader["name"], reader["email"]); } reader.Close(); // 修改记录 MySqlCommand updateCommand = new MySqlCommand("UPDATE users SET name='李四' WHERE email='[email protected]'", connection); updateCommand.ExecuteNonQuery(); // 删除记录 MySqlCommand deleteCommand = new MySqlCommand("DELETE FROM users WHERE email='[email protected]'", connection); deleteCommand.ExecuteNonQuery(); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { connection.Close(); } Console.ReadLine(); } } } ``` 在上面的示例中,我们先连接MySQL 数据库,然后执行了增、删、改、查的操作,并输出相应的结果。 注意,这只是一个简单的示例,实际情况下你需要根据自己的需求进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值