设为首页 收藏本站
查看: 872|回复: 0

[经验分享] .Net Core在Ubuntu上操作MySql折腾实录

[复制链接]

尚未签到

发表于 2017-11-19 16:44:58 | 显示全部楼层 |阅读模式
  .Net Core 2.0 发布也这么久了,一直想着折腾着玩玩,无奈一直没时间,这几天准备开始好好学习下C#在跨平台方面的应用,记录下来以备自己以后回忆、学习。
  本篇博客的主要内容:
  MySql在Ubuntu上的安装、基本的设置、Dapper(一个轻量级ORM)操作MySql实现基本CRUD。
  前期准备工作:


  • vmware workstation
  • Ubuntu Server 16.04 (确保安装SSH,为了可以使用远程终端)
  • XShell(远程终端)+XFTP(远程传文件)
  • VS 2017 或者VS Code
  • .Net Core 2.0 SDK(这个VS 2017.4以上版本会自带,如果是低版本或者VS Code的话需要去微软官网下载)
  • 一个可视化数据库管理工具,博主用的是Navicat
  在虚拟机上安装好Ubuntu(这个就不详细描述了,百度一下到处都是,另外注意下虚拟机最好设置为桥接模式,这样会在你所在的局域网段中和你使用的电脑平级,便于操作),并且确保有SSH的安装。
  首先,安装MySql,命令


  • sudo apt-get install mysql-server mysql-client
  中间会有一次让你输入root密码的界面,随便输入一个就好了,然后是登录,命令


  • mysql -u root -p
  如果出现了如下欢迎界面,就安装好了。
DSC0000.png

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


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




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

然后出现的是vi编辑器的界面,(PS:想操作好Linux,学好Vi是必须滴)
DSC0001.png
  找到这行,注释掉,保存并且退出。
  进入MySql命令行模式,输入如下指令,我要更改的用户是root,密码是123465


  • grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
  当出现如下字样是,即为修改成功
DSC0002.png

  这个时候,重启下MySql


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


  • sudo ufw allow 3306
  设置工作告一段落,我们来连接下试试
DSC0003.png

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

  表示已经成功的连接上了数据库。
  接下来建立一个测试数据库
DSC0005.png

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

  在Ubuntu上会有可能出现中文乱码的情况,这里使用这个教程解决 http://blog.csdn.net/qq_32144341/article/details/51318390
  好了,前期准备工作告一段落,接下来是我们的跨平台程序部分。
  首先,建立一个控制台应用程序,注意选择.Net Core 版本的
DSC0007.png

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


  • MySql.Data
  • 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);
if (addResult == 1)
{
Console.WriteLine("Insert Success");
Console.ReadKey();
}           
}
  点击发布,得到如下文件
DSC0008.png

  然后,我们的程序就要在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系统中是区分文件名大小写的,不要搞错了
DSC0009.png

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

  如图,成功插入了。
  刚才是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);
if (updateResult == 1)
{
Console.WriteLine("Update Success");
Console.ReadKey();
}
//删
string deleteSql = "DELETE FROM Book WHERE Id=@Id";
var deleteResult = dbConn.Execute(deleteSql, new { Id = existId });
if (deleteResult == 1)
{
Console.WriteLine("DELETE Success");
Console.ReadKey();
}
  好了,写了这么多,算是对C# on Linux 有个最基础的入门了,接下来还会继续研究在Linux编写C#程序,共勉~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-408595-1-1.html 上篇帖子: Ubuntu 16.04下解决sublime text3无法输中文问题 下篇帖子: Configure GRUB2 Boot Loader Settings In Ubuntu 16.04
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表