.Net Core 2.0 发布也这么久了,一直想着折腾着玩玩,无奈一直没时间,这几天准备开始好好学习下C#在跨平台方面的应用,记录下来以备自己以后回忆、学习。

本篇博客的主要内容:

MySql在Ubuntu上的安装、基本的设置、Dapper(一个轻量级ORM)操作MySql实现基本基本CRUD

前期准备工作:

  1. vmware workstation
  2. Ubuntu Server 16.04 (确保安装SSH,为了可以使用远程终端)
  3. XShell(远程终端)+XFTP(远程传文件)
  4. VS 2017 或者VS Code
  5. .Net Core 2.0 SDK(这个VS 2017.4以上版本会自带,如果是低版本或者VS Code的话需要去微软官网下载)
  6. 一个可视化数据库管理工具,博主用的是Navicat

在虚拟机上安装好Ubuntu(这个就不详细描述了,百度一下到处都是,另外注意下虚拟机最好设置为桥接模式,这样会在你所在的局域网段中和你使用的电脑平级,便于操作),并且确保有SSH的安装。

首先,安装MySql,命令

  • sudo apt-get install mysql-server mysql-client

中间会有一次让你输入root密码的界面,随便输入一个就好了,然后是登录,命令

  • mysql -u root -p

如果出现了如下欢迎界面,就安装好了。

接下来我们进行数据库的设置,有如下内容:

  1. MySql默认设置为不可远程访问,我们需要把它设置为可以远程访问的,便于我们远程管理。
  2. 同时把root账号设置为可以远程使用。另外注意下,生产环境中一般不会使用root账号连接数据库,而是创建一个普通的账号,去管理某一个数据库。不过这不是我们的重点,有兴趣的可以自己去搜下相关内容。

设置MySql的远程允许访问,首先是需要改的是MySql的配置文件,

  • sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

然后出现的是vi编辑器的界面,(PS:想操作好Linux,学好Vi是必须滴)

找到这行,注释掉,保存并且退出。

进入MySql命令行模式,输入如下指令,我要更改的用户是root,密码是123465

  • grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

当出现如下字样是,即为修改成功

这个时候,重启下MySql

  • sudo service mysql restart

数据库方面的设置完成了,而Ubuntu之类的Linux系统为了安全性,一般是开启了防火墙,像MySql使用3306端口需要打开端口以后才可以被外部访问,这时我们使用Ubuntu操作ufw防火墙的命令

  • sudo ufw allow 3306

设置工作告一段落,我们来连接下试试

我这里使用了Navicat,保存后连接。

表示已经成功的连接上了数据库。

接下来建立一个测试数据库

然后接下来我们建立一个测试用的表

在Ubuntu上会有可能出现中文乱码的情况,这里使用这个教程解决 http://blog.csdn.net/qq_32144341/article/details/51318390

好了,前期准备工作告一段落,接下来是我们的跨平台程序部分。

首先,建立一个控制台应用程序,注意选择.Net Core 版本的

然后使用Nuget安装如下两个程序包

  1. MySql.Data
  2. Dapper

上面那个是MySql连接驱动,下面这个是由StackOverFlow出品的一个开源轻量级ORM工具,感兴趣的话还可以去GitHub去看下它的源码

安装好以后,我们开始写代码,首先是建立一个实体类,需要和上面我们建立的Book表的字段对应一致

    public class Book
    {
        public string Id { get; set; }

        public string BookName { get; set; }

        public string Author { get; set; }

        public double Price { get; set; }

        public DateTime PublishTime { get; set; }
    }

然后来到我们的控制台,编写如下代码

    class Program
    {
        static void Main(string[] args)
        {
            IDbConnection dbConn=new MySqlConnection("Server=192.168.200.200;Database=TestDb;Uid=root;Pwd=123456;sslmode=none;");

            Book newBook=new Book()
            {
                Id=Guid.NewGuid().ToString(),
                Author = "小明",
                BookName = "测试书名",
                Price = 10.5,
                PublishTime = DateTime.Now
            };

            string addSql =
                "INSERT INTO Book (Id,Author,BookName,Price,PublishTime) VALUES (@Id,@Author,@BookName,@Price,@PublishTime)";

            var addResult=dbConn.Execute(addSql, newBook);

            )
            {
                Console.WriteLine("Insert Success");
                Console.ReadKey();
            }           

    }

点击发布,得到如下文件

然后,我们的程序就要在Ubuntu下跑啦~~,这个时候,我们需要在Ubuntu上安装一个运行环境,安装.Net Core 2.0 For Linux,教程地址,https://www.microsoft.com/net/learn/get-started/linuxubuntu,基本没啥坑,就不展开了,傻瓜式按顺序执行一遍就好了,

当按照微软官网的教程执行一遍后,执行命令

  • dotnet

若出现有相关欢迎或者说明字样,就证明安装成功了。

这个时候,我们在XFTP下,连接Ubuntu,在你的 /home/用户名 下新建一个文件夹,然后把我们上一副图中,发布好的文件都拖进去。然后切换回Linux命令行,使用cd命令,到刚刚拖过去的发布文件的文件夹,

然后使用命令

  • dotnet TestStudyMySql.dll

格式为:dotnet 你的可执行项目名.dll,这里注意下,Linux系统中是区分文件名大小写的,不要搞错了

如我们上面所写的程序那样,打印出了“Insert Success”字样。这时我们去数据库管理工具那里看一眼,

如图,成功插入了。

刚才是CRUD的C,其实剩下的RUD用Dapper写起来也十分的简单,代码如下

        //查
            string existId = newBook.Id;  //查询我们刚才插入的对象
            string selectSql = "SELECT * FROM Book WHERE Id=@Id";
            Book queryBook =
                dbConn.QueryFirstOrDefault<Book>(selectSql, new {Id = existId });
            Console.WriteLine("Query Success");
            Console.WriteLine($"This book's price is {queryBook.Price}");
            Console.ReadKey();

            //改
            queryBook.BookName = "西游记";
            string updateSql = "Update Book SET Id=@Id,Author=@Author,BookName=@BookName,Price=@Price,PublishTime=@PublishTime WHERE Id=@Id";
            var updateResult = dbConn.Execute(updateSql, queryBook);

            )
            {
                Console.WriteLine("Update Success");
                Console.ReadKey();
            }

            //删
            string deleteSql = "DELETE FROM Book WHERE Id=@Id";
            var deleteResult = dbConn.Execute(deleteSql, new { Id = existId });

            )
            {
                Console.WriteLine("DELETE Success");
                Console.ReadKey();
            }

好了,写了这么多,算是对C# on Linux 有个最基础的入门了,接下来还会继续研究在Linux编写C#程序,共勉~

.Net Core在Ubuntu上操作MySql折腾实录的更多相关文章

  1. ubuntu上安装mysql 编译安装

    为什么要折腾?首先说明的是ubuntu上安装mysql等软件是非常容易简单的,其简单的程度盖过windows上的安装,一句sudo apt-get install就可以搞定.如果想用最简便的方法安装m ...

  2. Ubuntu上安装MySql过程,以及遇到的一些问题

    今天在Ubuntu服务器上安装MySql的时候遇到了一些问题,记录下来,以防以后忘记. 安装环境:Ubuntu14.04 安装命令: //安装Mysal服务端//会提示输入root密码 sudo ap ...

  3. Ubuntu上安装MySQL

    Ubuntu上安装MySQL非常简单只需要几条命令就可以完成.`````` sudo apt-get update sudo apt-get install mysql-server 会弹出提示,让输 ...

  4. [mysql]设置Ubuntu上的MySQL可以远程访问

    今天在win10上用django连接安装在Ubuntu上的MySQL上,始终提示错误(can not connect mysql),但是在Ubuntu上访问是没有问题的.于是开始查找原因: 1. 33 ...

  5. ubuntu上安装 MySQL 启动/停止 连接MySQL

    1.Ubuntu上安装MySQL服务   1.安装服务端   sudo apt-get install mysql-server    2.安装客户端   sudo apt-get install m ...

  6. ubuntu上安装mysql及导入导出

    ubuntu上安装mysql:  1. sudo apt-get install mysql-server 2. apt-get isntall mysql-client3. sudo apt-get ...

  7. ASP.NET Core:使用EntityFrameworkCore操作MySql来丰富仓储模块

    概述 上一篇简单介绍了Dapper的基本用法,数据的存储为SqlServer.那么这一篇就记录一下使用EFCore来操作MySql的一些方式,这种模式比较适合那种一个项目中需要操作多种数据库的模式.不 ...

  8. 入门系列之在Ubuntu上使用MySQL设置远程数据库优化站点性能

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由苏子晨 发表于云+社区专栏 介绍 随着您的应用程序或网站的增长,您可能已经超出了当前的服务器设置.如果您在同一台计算机上托管Web服务 ...

  9. Ubuntu上更改MySQL数据库数据存储目录

    之前写过一篇博客"MySQL更改数据库数据存储目录",当时的测试环境是RHEL和CentOS,谁想最近在Ubuntu下面更改MySQL数据库数据存储目录时遇到了之前未遇到的问题,之 ...

随机推荐

  1. mvc一对多模型表单的快速构建

    功能需求描述 Q:在实际的开发中,经常会遇到一个模型中包含有多个条目的表单.如何将数据提交到后台? A: 以数组的形式提交到后台就Ok了(真的那么简单么,如果再嵌套一层呢?) A2:拆分多个模型,映射 ...

  2. react基础(2)

    react基础(1):介绍了如何创建项目,总结了JSX.组件.样式.事件.state.props.refs.map循环,另外还讲了mock数据和ajax 还是用 react基础1 里创建的项目继续写案 ...

  3. DotNetCore跨平台~linux上还原自主nuget包需要注意的问题

    问题的产生的背景 由于我们使用了jenkins进行部署(jenkins~集群分发功能和职责处理),而对于.net core项目来说又是跨平台的,所以对它的项目拉取,包的还原,项目的编译和项目的发布都是 ...

  4. Hadoop安全(2)——————UserGroupInformation

    UserGroupInformation保存hadoop用户及组信息 此类包装JAAS Subject,并提供确定用户的用户名和组的方法.它支持Windows,Unix和Kerberos登录模块.

  5. VacmMIB

    VACM 基于视图的访问控制模型  是SNMPV3对MIB中被管对象的访问进行控制的模型 特点: 1.VACM 确定是否允许用户访问本地MIB的被管理对象.当用户请求消息到达代理的命令响应器时,命令响 ...

  6. ZOJ 2042 Divisibility (DP)

    Divisibility Time Limit: 2 Seconds      Memory Limit:65536 KB Consider an arbitrary sequence of inte ...

  7. java 学习笔记 读取配置文件的三种方式

    package com.itheima.servlet.cfg; import java.io.FileInputStream; import java.io.FileNotFoundExceptio ...

  8. Java面向对象 线程技术--上篇

     Java面向对象   线程 知识概要:                   (1)线程与进程 (2)自定义线程的语法结构 (3)多线程概念理解 (4)多线程状态图 (5)多线程--卖票 (6)同 ...

  9. Android 性能测试之方向与框架篇

    假期结束,你的状态有没有回归?那么,放空脑袋后,先来学习学习,欢迎大家继续关注腾讯云技术社区. 作者:李帅 导语 借项目的开发周期,把思考了一段时间的场景化性能测试框架搭建起来,包括 耗电性能测试.内 ...

  10. 通用table样式

    <html> <head> <title>通用table样式</title> <style type="text/css"&g ...