C#访问MySQL数据库(winform+EF)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 原文:C#访问MySQL数据库(winform+EF)以前都是C#连接SQLServer,现在MySQL也比较火了,而且是开源跨平台的,这里连接使用一下,主要是体会一下整个流程,这里使用的是winform 访问MYSQL,当然使用winfrom,还是wfp,以及其他的技术这里不讨论,个人觉得这个比较上手快。
原文: C#访问MySQL数据库(winform+EF)

以前都是C#连接SQLServer,现在MySQL也比较火了,而且是开源跨平台的,这里连接使用一下,主要是体会一下整个流程,这里使用的是winform 访问MYSQL,当然使用winfrom,还是wfp,以及其他的技术这里不讨论,个人觉得这个比较上手快。

http://jingyan.baidu.com/article/642c9d34aa809a644a46f717.html

1、安装MYSQl数据库,这里略过,可以参考此文档进行安装。

 

此文档已经比较细致了,安装并不复杂,主要是下一步下一步就行了,要会基本的配置,这里我的数据库用户名还是sa(建议自己建立一个用户),root的用户名和密码我们这里暂不使用。

2、连接MYSQL数据库,可以采用自带的MySQL Workbench 6.2 CE工具

                      

登录后就可以进行建表等操作了,这里我建立一个数据库名称为MY_OA的数据库,我们直接使用SQL语句执行并建立数据库然后刷新列表就可以查看到我们建立的数据库了

如图(1)(2)(3)(4)对应的步骤,另外建立了数据库后还需要建立几张表来存储数据,这些都是基础的和SQLserver大同小异的。


脚本如下:

1 CREATE database My_OA
2 
3 CREATE TABLE my_oa.sys_user
4 (
5 id INT not NULL AUTO_INCREMENT PRIMARY KEY,
6 userName varchar(32),
7 pwd varchar(32)
8 
9 );

 

 当然也可以使用图形界面来配置,直接鼠标右键来建表,主要是看个人的习惯了,熟悉的话直接SQL句会方便很多也比较快,

这里我们快速的插入三条数据,便于以后测试使用,因为ID是自增的,所以可以不用管,插入后你会发现ID已经自己有了,只是MYSQL中AUTO_INCREMENT和SQLSEVE的identity的区别

1 INSERT INTO sys_user(userName,pwd) VALUES('51diysoft','123');
2 
3 INSERT INTO sys_user (userName,pwd) VALUES('xmd','123');
4 
5 INSERT INTO sys_user (userName,pwd) VALUES('hjk','123');

 

当然说道这里我们还可以使用VS2013来连接MYSQL数据库,因为后边的EF框架要访问,肯定也能够连接吧,

我们打开VS的【视图】【服务器资源】,点到【数据库连接】右键添加“数据库”,然后就和正常连接SQLServer的步骤一样了

此处选择MYSQL就行了,正常情况下安装MYSQL的时候就会把VS对应的连接驱动等相关内容直接加入的,不用去手动加的,当然看到这里也是可以连接Oracel数据库的,红线标记的地方,道理应该类似。

下边需要服务器的地址,用户名和密码,最好测试能够连接通过,我这里是sa用户(注意不是默认的),是自己建立的一个用户,默认的是root,如果需要root来登录服务器的话必须在安装MYSQL的时候注意勾选,否则就要新建一个用户来操作。

 

 

这里数据已经有了,另外我们还可以使用SQLdbx、Navicat_Premium_11.0.10等数据库的客户端工具来连接,这工具智能提示比较强,而且体积小便于携带和维护

下面我们就以SQLdbx为例,讲解一下如何连接数据库,其实都是一样的连接,如下:

SQldbx的下载地址和本次的SQl脚本例子可以到百度云下载:

 

第一步:

需要选择连接的数据库类型(MYSQL),这里也是可以连接其他类型数据库的,自己看吧,也可以试试

第二步:

也是输入用户名和密码连接就行了。

数据库可以为空,等登陆后再选择数据库也可以。

另外我们对比一下数据库表的复制,SQLServer我们直接可以这样复制(在select * from 表)的中间加入一个into 新表:

SELECT * INTO sys_user3 FROM sys_user

而在MYSQL中我们直接这样写是报错的:只有传统的建表再导数据了,比如

CREATE TABLE test
(
SELECT * FROM sys_user
)

 

,二期默认生成的这个id不会自动增长的,需要注意一下,我们主要是为了备份表的数据。

不同的数据库肯定有些小区别,慢慢研究吧。

3、如何使用VS2013建立MYSQL的项目(这里讲winform吧)

  上边讲的有点多了,赶紧的

(1)、VS【文件】=》【新建】=》【项目】略过,注意选择对应的项目类型默认有winform和asp .net的自己选择,另外我们还需要选择EF的版本,

如何对Entity Framework没啥感觉,没关系,简单来说就是微软帮你连接了数据库的是一个实体框架,让你操作起来比较方便,不用过多去写SQLhelper并能和linq语句lamda表达式等结合起来,提高开发效率,这个是比较实用的。

参考介绍:

http://baike.baidu.com/link?url=jDHhtM4QGOpQJmgY9bCe24VJy4kgKAvsuRHJgGmuXlGilJ7lmVVzQkoVMX9KlYCmdagGACDm8042dQnR-E6_nq

 

另外还要说明的是EF的版本,我这里使用的是EF6,可以通过nuget工具包管理来获得最新版本

 

以下是建立VS项目的步骤截图:

以上步骤首先是新建一个MYSQL的连接,然后选择对应的表生成对应的EF实体框架,这样一个EF的winform项目基本就建立好了。

 

4、查看winfrom项目结构

打开对应的*.tt文件,这些就是EF自动生成的连接数据库后的相关实体类,就不用自己去建立类了(必要时需要自己建立Vew_Sys_User)

namespace MySql_Windows_Forms_Project2
{
using System;
using System.Collections.Generic;

public partial class sys_user
{
public int id { get; set; }
public string userName { get; set; }
public string pwd { get; set; }
}
}

然后我们还是调用一下EF生成的实体吧,做一个简单的登录页面和系统主页。

 

5、登录页面的实现

winform如何制作登录页面,基本流程就是拖动几个lable和textbox,并设置基本的属性,比如密码框为星号,窗口的起始位置为CenterScreen,是否最小化等等

我们就大概看一下代码吧,很简单的,使用的部分Linq的查询,结合EF框架操作,比较方便

(主要是体会流程,没有任何美化)

 1      // 获取输入的用户名和密码
 2             using (MyOAModelEntities db = new MyOAModelEntities())
 3             {
 4                 string strUserName = txtUserName.Text.Trim();
 5                 string strPwd = txtPwd.Text.Trim();
 6                 //查询数据库中的记录
 7                 var userinfo = (from m in db.sys_user
 8                                 where m.userName == strUserName && m.pwd == strPwd
 9                                 select m).FirstOrDefault(); 
12                 if (userinfo != null)
13                 {
14                     CurrentUserInfo = userinfo;//标记全局的用户 方便其他地方使用
15                     //  MessageBox.Show("登录成功!");
16                     this.Hide();
17                     MainWindow m = new MainWindow();
18                     m.ShowDialog();
19                 }
20                 else
21                 {
22                     MessageBox.Show("用户名或者密码错误!");
23                 }

 

 Code下载地址:

http://pan.baidu.com/s/18n54i

以后将继续学习MYSQL数据库,另外个人在研究C#  Mono for安卓,有兴趣的友友可以一起讨论,互勉!

 

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
安全 关系型数据库 数据管理
DMS产品常见问题之香港地区RDS开启安全访问代理失败如何解决
DMS(数据管理服务,Data Management Service)是阿里云提供的一种数据库管理和维护工具,它支持数据的查询、编辑、分析及安全管控;本汇总集中了DMS产品在实际使用中用户常遇到的问题及其相应的解答,目的是为使用者提供快速参考,帮助他们有效地解决在数据管理过程中所面临的挑战。
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
65 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
21天前
|
存储 NoSQL Java
Java数据库编程指南:实现高效数据存储与访问
【4月更文挑战第2天】Java开发者必须掌握数据库编程,尤其是JDBC,它是连接数据库的标准接口。使用Spring JDBC或JPA能简化操作。选择合适的JDBC驱动,如MySQL Connector/J,对性能至关重要。最佳实践包括事务管理、防SQL注入、优化索引和数据库设计。NoSQL数据库如MongoDB也日益重要,Java有对应的驱动支持。理解这些概念和技术是构建高效数据库应用的基础。
Java数据库编程指南:实现高效数据存储与访问
|
2月前
|
SQL 数据库连接 应用服务中间件
C#WinForm基础编程(三)
C#WinForm基础编程
73 0
|
2月前
C#WinForm基础编程(二)
C#WinForm基础编程
55 0
|
2月前
|
C# 数据安全/隐私保护
C#WinForm基础编程(一)
C#WinForm基础编程
60 0
|
3月前
|
SQL 关系型数据库 MySQL
Python 数据库访问与ORM框架——打造高效开发利器
Python 作为一门广泛使用的编程语言,其在数据库访问方面也有着较为成熟的解决方案,其中ORM框架更是成为了开发者们的首选。本文将介绍 Python 中数据库访问和 ORM 框架的基本概念,以及如何使用 SQLAlchemy 这一优秀的 ORM 框架进行开发。
|
3月前
|
SQL 数据管理 数据库
Python数据库访问与ORM框架:探索高效数据管理的奥秘
在当今信息爆炸的时代,高效地管理和处理海量数据成为了企业和开发者的迫切需求。本文将介绍Python中的数据库访问技术以及ORM框架(如SQLAlchemy),探索其在数据管理方面的重要作用。通过使用Python数据库访问和ORM框架,开发者可以更轻松地操作数据库、提高代码可读性和维护性,并实现高效的数据持久化和查询。
|
3月前
|
关系型数据库 API 数据库
Python数据库访问与ORM框架:加速开发、提升效率
在现代软件开发中,数据库是不可或缺的组成部分。本文介绍了Python中数据库访问的重要性,并探讨了ORM框架(例如SQLAlchemy)如何帮助程序员加速开发、提升效率。通过使用ORM框架,开发人员可以轻松地将Python对象映射到数据库表,并且可以通过简洁的API进行数据库操作。此外,本文还讨论了ORM框架在处理复杂查询、维护数据一致性和实现数据库迁移方面的优势。
|
7天前
|
SQL 缓存 Java
Java数据库连接池:优化数据库访问性能
【4月更文挑战第16天】本文探讨了Java数据库连接池的重要性和优势,它能减少延迟、提高效率并增强系统的可伸缩性和稳定性。通过选择如Apache DBCP、C3P0或HikariCP等连接池技术,并进行正确配置和集成,开发者可以优化数据库访问性能。此外,批处理、缓存、索引优化和SQL调整也是提升性能的有效手段。掌握数据库连接池的使用是优化Java企业级应用的关键。