C#访问MySQL(二):数据插入与修改(增改)
前言:
前面说了数据库的连接查询,现在说数据库的增删改。这里引入一个数据库的实体类,就是将当前数据库的某一个表里面所有字段写成实体类,如下:
1.数据库的实体类:
需要项目里下载Chloe.dll和Chloe.Mysql.dll,如下:
例如有表如下:

它的实体类就是:
using System;
using Chloe.Entity;
using Chloe.Annotations;
namespace WpfApp1
{
/// <summary>
/// 实体类tb_a。(属性说明自动提取数据库字段的描述信息)
/// </summary>
[TableAttribute("tb_a")]
[Serializable]
public partial class Tb_A
{
#region Model
private int _ID;
private string _Name;
private int? _Age;
private int? _Sex;
/// <summary>
/// ID
/// </summary>
[ColumnAttribute(IsPrimaryKey = true)]
public int ID
{
get { return _ID; }
set
{
this._ID = value;
}
}
/// <summary>
/// 名字
/// </summary>
public string Name
{
get { return _Name; }
set
{
this._Name = value;
}
}
/// <summary>
/// 年龄
/// </summary>
public int? Age
{
get { return _Age; }
set
{
this._Age = value;
}
}
/// <summary>
/// 性别
/// </summary>
public int? Sex
{
get { return _Sex; }
set
{
this._Sex = value;
}
}
#endregion
}
}
2.增加一行数据:
封装一下IDbConnectionFactory。
public class MySqlConnectionFactory : IDbConnectionFactory
{
string _connString = null;
public MySqlConnectionFactory(string connString)
{
this._connString = connString;
}
public IDbConnection CreateConnection()
{
IDbConnection conn = new MySqlConnection(this._connString);
return conn;
}
}
插入一行数据方法:
internal static bool InsertNewData(Tb_A Model, out long lID)
{
MySqlContext context = new MySqlContext(new MySqlConnectionFactory("host = 数据库IP; Port = 数据库端口; Database = 数据库名; uid = 数据库账户; pwd = 数据库密码; Charset = utf8; Allow User Variables = true"));
using (MySqlContext dx = context)
{
IQuery<Tb_A> q = dx.Query<Tb_A>();
lID = dx.Insert<Tb_A>(Model).ID;
return true;
}
}
调用:
private void Button_Click(object sender, RoutedEventArgs e)
{
Tb_A Model = new Tb_A()
{
Age = 18,
Name = "张三",
Sex = 1,
};
long ID = 0;
InsertNewData(Model,out ID);
}
结果:

3.修改某一行数据:
方法:
internal static bool UpdateName(string name,long ID)
{
try
{
MySqlContext context = new MySqlContext(new MySqlConnectionFactory("host = 数据库IP; Port = 数据库端口; Database = 数据库名; uid = 数据库账户; pwd = 数据库密码; Charset = utf8; Allow User Variables = true"));
using (MySqlContext dx = context)
{
return dx.Update<Tb_A>(a => a.ID == ID, a => new Tb_A()
{
Name = name,
}) >= 0;
}
}
catch (Exception)
{
return false;
}
}
调用:
private void Button_Click(object sender, RoutedEventArgs e)
{
Tb_A Model = new Tb_A()
{
Age = 18,
Name = "张三",
Sex = 1,
};
long ID = 1;
UpdateName("李四" , ID);
}
结果:

C#访问MySQL(二):数据插入与修改(增改)的更多相关文章
- MySQL数据库表的数据插入、修改、删除、查询操作及实例应用
一.MySQL数据库表的数据插入.修改.删除和查询 CREATE DATABASE db0504; USE db0504; CREATE TABLE student ( sno ) NOT NULL ...
- MySQL数据库数据存放位置修改
MySQL数据库数据存放位置修改 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方 ...
- navicat for Mysql查询数据不能直接修改
navicat for Mysql查询数据不能直接修改 原来的sql语句: <pre> select id,name,title from table where id = 5;</ ...
- TOAD FOR MYSQL 进行数据插入时乱码的解决办法---MariaDB 5.5
最近使用mysql是发现插入的数据乱码,几经周折终于找到的解决方法,特作备忘. 开始有将mysql的字符集全部设置成utf8,如下: SHOW VARIABLES LIKE 'character_se ...
- 解决 C++ 操作 MySQL 大量数据插入效率低下问题
往 Mysql 中,插入10000条简单数据.速度很缓慢,竟然要5分钟左右, 可是打开事务的话.一秒不到就搞定了 代码: #include <iostream> #include < ...
- 关于mybatis用mysql时,插入返回自增主键的问题
公司决定新项目用mybatis,虽然这个以前学过但是一直没用过都忘得差不多了,而且项目比较紧,也没时间去系统点的学一学,只好很粗略的百度达到能用的程度就行了. 其中涉及到插入实体要求返回主键id的问题 ...
- mysql 自动记录数据插入及最后修改时间
总结: `uptime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 原文 应用场景: 1.在数据 ...
- oracle数据库之数据插入、修改和删除
作为一合格的测试人员对数据库的单表查询.多表查询.分组查询.子查询等等这些基本查询方法还是要会的.不然到企业中,容易被一些人鄙视,或者说如果数据库学不好,表查不明白,那么对自己能力来说也是一种侮辱,因 ...
- mysql DML 数据插入,删除,更新,回退
mysql插入,删除,更新地址:https://wenku.baidu.com/view/194645eef121dd36a32d82b1.html http://www.cnblogs.com/st ...
- MySQL之JDBC插入、修改、删除封装集于一个方法
1. 先建四个包 ① com.tz.entity 实体包 ② com.tz.dao 数据访问层包 -> com.tz.dao.impl 实现包 ③ com.tz.util 工具类包 ④ com. ...
随机推荐
- 日志分析查看—— cat+grep+awk+uniq+sort+wc+join
有个统计日志信息的需求,下面是使用到的命令 //按 \t 对文件每一行进行切割,正则匹配第二列为32896时,输出第一列:再进行排序并去重,最后统计行数 cat file.log|awk -F '\t ...
- Django初识(一)
一.Django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的设计模式,即模型M,视图V和模版T 1.框架介绍 具体介绍Django之前,必须先介绍Web框架的 ...
- SMW0 对应 MIME TYPE 无法包进请求上传
SAP Notes - SAP for Me 2228060 - SMW0 Key entry for table MIMETYPES may only be generic Resolution S ...
- MyBatis(Plus) 打印SQL, 分析执行时间
MyBatis/MyBatis Plus打印的SQL调试起来比较麻烦 当然IDEA/eclipse都有类似mybatis log plugin这种插件来解析, 但是安装插件有些许弊端, 就写了个工具类 ...
- Vue2 element-ui组件二封-表单组件-效果展示
vue2已经落后了? 不着急, vue3的也在写的过程中, 只是发出来vue2的一些组件 系列说明: > 编写原因 vue2在很多人眼里已经快过时了, 而我一直想写一些总结, 但是从两年前到现在 ...
- Spring Boot应用启动
1.Eclipse 中启动Spring Boot应用 右键应用程序启动类, Run As Java Application 2.maven 命令: mvn spring-boot:run 在应用程序启 ...
- js——带暂停、启动功能的定时
简单的封装,将 interval 二次封装,对外提供暂停.启动功能. 不足之处:interval定时间隔是固定的,在调用异步函数的时候,可能会出现bug.例如:在调用ajax异步请求过程中,发送a.b ...
- 分治-1-归并排序(Divide and Conquer-1-merge sort)
#include <stdio.h> #define INFINITY 999999 #define LEN(A) ((sizeof (A)) / (sizeof A[0])) void ...
- vue高级进阶( 二 ) 8种组件通信详解
vue高级进阶( 二 ) 8种组件通信详解 猛兽总是独行,牛羊才成群结队. -------鲁迅 vue组件通信的重要性无需多言...但是你肯定没有全部掌握,所以这第二篇文章应运而生 props和$ ...
- 微信h5支付报错 商家参数格式有误,请联系商家解决
商家参数格式有误,请联系商家解决 当前调起H5支付的referer为空导致,一般是因为直接访问页面调起H5支付,请按正常流程进行页面跳转后发起支付,或自行抓包确认referer值是否为空 解决:就把 ...