我们使用 Dlang / Rust / Golang 在服务端开发的时候对数据库操作是家常便饭,而对于所谓的系统级编译型语言来说操作数据库可能没那么方便,不像 PHP 和 JAVA 那样,对于比较新的三个编译型语言我们来看看效果,刚好这三个语言的语法差异比较大。

一、数据插入 - INSERT

1.1 : Dlang 插入数据

import std.stdio;

import hunt.database;

void main()

{

auto db = new Database("mysql://root:123456@localhost:3306/test?charset=utf8mb4");

int result = db.execute(`INSERT INTO user(username) VALUES("test")`);

// 打印插入的ID

writeln(result);

db.close();

}

1.2 : Rust 插入数据

extern crate postgres;

use postgres::{Connection, SslMode};

fn main() {

let conn = Connection::connect("postgres://postgres@localhost", SslMode::None).unwrap();

conn.execute("INSERT INTO user (username) VALUES (\"test\")", &[]).unwrap();

}

1.3 : Golang 插入数据

import (

"database/sql"

"fmt"

_ "github.com/lib/pq"

"time"

"log"

)

func main() {

db, err := sql.Open("postgres", "user=portgres password=123456 dbname=test sslmode=disable")

if err != nil {

log.Fatal(err)

return nil

}

stmt := db.Prepare("INSERT INTO user (username) VALUES (\"test\")")

stmt.Exec()

stmt.Close()

}

二、数据查询 - SELECT

2.1 : Dlang 查询数据

import std.stdio;

import hunt.database;

void main()

{

auto db = new Database("mysql://root:123456@localhost:3306/test?charset=utf8mb4");

foreach(row; db.query("SELECT * FROM user LIMIT 10"))

{

writeln(row["username"]);

}

db.close();

}

2.2 : Rust 查询数据

extern crate postgres;

use postgres::{Connection, SslMode};

fn main() {

let conn = Connection::connect("postgres://postgres@localhost", SslMode::None).unwrap();

for row in &conn.query("SELECT * FROM user", &[]).unwrap();

println!("Found person {}", row.get(0));

}

}

2.3 : Golang 查询数据

import (

"database/sql"

"fmt"

_ "github.com/lib/pq"

"time"

"log"

)

type User struct {

UserName string

}

func main() {

db, err := sql.Open("postgres", "user=portgres password=123456 dbname=test sslmode=disable")

if err != nil {

log.Fatal(err)

return nil

}

user := User{}

stmt := db.Query("SELECT * FROM user")

for rows.Next() {

rows.Scan(&user.UserName)

fmt.Println(user.UserName)

}

stmt.Close()

}

三、总结

对于操作数据库来说静态类型语言的确不是很容易操作,类似C++这么多年还没有相对容易使用的数据库操作的 library,但无论 Dlang / Rust 和 Golang 都能比较全面的操作数据库。

这三个语言的语法还有比较大的差异,Dlang 语法可读性比较好(感觉和PHP是不是有点像?),Rust 相对来说操作符会多一些,而 golang 在执行 SELECT 之后需要创建对象绑定,不支持字段作为 key 的操作形式?(可能是我功课没做好)

在包引入方面 Dlang 最简单,Rust 相对来说颗粒度控制的更细,而 Golang 相对繁琐一些,需要几个包同时引入才可以操作数据库。

总而言之系统级语言在服务端的应用日益增多,更多有意思的对比还需要大家一起来挖掘,不要沉浸在单一的脚本语言如 PHP、虚拟机语言 JAVA 和 C#,多多学习,现在语言的学习成本已经非常低,我们应该在不同的应用场景使用更适合的开发语言。

rust 连接mysql数据库_Dlang、Rust 以及 Golang 数据库操作方式对比相关推荐

  1. rust 连接mysql数据库_Actix-web Rust连接Postgres数据库

    Actix-web Rust连接Postgres数据库 ​ Rust1.39支持了异步async,await,Actix-web在2.0.0-alpha支持了原生异步写法,所以本文中使用的Actix- ...

  2. android连接mysql查询表内记录_Android Room数据库多表查询的使用实例

    前言 在SQLite数据库中,我们可以指定对象之间的关系,因此我们可以将一个或多个对象与一个或多个其他对象绑定.这就是所谓的一对多和多对多的关系. 既然要多表查询,所以表之间就得有关联.这时候我们就得 ...

  3. 关于DBeaver连接mysql驱动下载失败问题【数据库】

    1. 下载MySQL数据库驱动 进入下载地址:https://dev.mysql.com/downloads/connector/j/ 2. 解压安装包 解压路径:C:\mysql-connector ...

  4. 连接Mysql弹出2005_正确安装数据库SQL2005和安装出现的问题的解决方法

    下载安装包链接:https://pan.baidu.com/s/1rYrFrjk1Rsps93xRrmx8LA 提取码:4xu3 解压进入以下文件夹 双击setup.exe进行安装.详细安装步骤直接百 ...

  5. mysql安装连接测试c_C连接MySQL数据库开发之Windows环境搭建及测试_MySQL

    一.开发环境 Win8.1 64位.VS2013.MySQL5.5.3764位 MySQL安装目录为:C:/Program Files/MySQL/MySQL Server 5.5二.配置工程环境 首 ...

  6. C连接MySQL数据库开发之Windows环境配置及测试

    一.开发环境 Win8.1 64位.VS2013.MySQL5.5.3764位 MySQL安装目录为:C:\Program Files\MySQL\MySQL Server 5.5 二.配置工程环境 ...

  7. 【Python】PyMySQL 连接 MySQL数据库

    PyMySQL连接 Mysql 安装 PyMySQL PyMySQL 连接数据库 创建数据库(数据库必须存在) 创建数据表 插入操作 查询操作 更新操作 删除操作 综合案例 Connection Ob ...

  8. delphi xe mysql_Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决(对三层的例子配置有帮助)...

    标签: Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQ ...

  9. delphi xe mysql_Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决

    [用户在使用FineReport报表时,客户端连接SQLSever.Oracle.Informix时常常会出现一些错误,笔者整理了一些疑难问题的解决方案.1. SQLServer数据库连接失败常见解决 ...

  10. SQLALchemy之Python连接MySQL

    20220225 https://www.cnblogs.com/toheart/p/9802990.html pymssql连接sqlserver https://blog.csdn.net/qq_ ...

最新文章

  1. 网络工程原理与实践教程实验安排
  2. 别做喷子,多去钻研!
  3. 深入理解CUDA线程层次以及关于设置线程数的思考
  4. SAP Fiori Elements - how to create annotation for a property
  5. android 日期时间类,Android 日期时间等转换工具类
  6. 【性能测试】Linux系统监控-Top命令
  7. Powershell: powershell 获取本机IP地址
  8. torch中的几种乘法。torch.mm, torch.mul, torch.matmul
  9. GNOME Screencaster 将支持 Miracast P2P 传输
  10. ROI与CPC、CPM有什么关系
  11. 安装Git SCM for Windows
  12. Axure-产品交互设计师的利器
  13. java实现福利彩票抽奖_【福利】快来参与抽奖获得《Java程序设计》
  14. 梯有N阶,上楼可以一步上一阶,也可以一次上二阶(Java实现)
  15. 惊天大突破!「我国数学家证明 NP=P」!道翰天琼认知智能机器人平台API接口大脑为您揭秘。
  16. 本科毕设论文如何写(1)-- 快速下手
  17. 6s测试信号软件,主流智能机信号强度测试 iPhone6s表现差
  18. 斐波那契数列的通项公式
  19. 对象数组根据多个属性排序
  20. leetcode374

热门文章

  1. vm虚拟机关机后打不开_VMWARE虚拟机非正常关机导致无法启动的解决办法
  2. 熊猫在线压缩图_回归图与熊猫和脾气暴躁
  3. python数据分析实验报告心得_Python实训周总结
  4. PHP初级程序员出路
  5. ubuntu18.04下的屏幕亮度调节问题
  6. android 闪屏图片,Android的闪屏图像尺寸,以适应所有设备Android的闪屏图像尺寸,以适应所有设备(Andro...
  7. winAUTOPWN2.8更新下载
  8. matplotlib折线图(标记点、标记点大小、标记点边颜色、标记点边宽)
  9. 【读书笔记】《谈谈方法》(笛卡尔)
  10. 《Python机器学习及实践:从零开始通往Kaggle竞赛之路》第1章 简介篇 学习笔记(一)1.1机器学习综述、1.2Python编程库、1.3Python环境配置总结