美文网首页
Dlang、Rust 以及 Golang 数据库操作方式对比

Dlang、Rust 以及 Golang 数据库操作方式对比

作者: 邹佳庆 | 来源:发表于2019-02-20 19:56 被阅读0次

我们使用 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#,多多学习,现在语言的学习成本已经非常低,我们应该在不同的应用场景使用更适合的开发语言。

相关文章

  • Dlang、Rust 以及 Golang 数据库操作方式对比

    我们使用 Dlang / Rust / Golang 在服务端开发的时候对数据库操作是家常便饭,而对于所谓的系统级...

  • python golang rust 粗略对比

    打开一个网页的时间 golang python rust

  • 第三方数据库GreenDao总结

    一.GreenDao的概述以及特点: 基于对象关系的映射方式来操作数据库的框架,提供一个接口通过操作对象的方式操作...

  • golang开发环境搭建

    1. 操作系统以及golang安装 使用操作系统redhat7.2 x86_64为,将golang解压后拷贝到/u...

  • MongoDB与MySQL效率对比

    本文主要通过批量与非批量对比操作的方式介绍MongoDB的bulkWrite()方法的使用。顺带与关系型数据库My...

  • Rust for cpp devs - channel

    与 golang 一样,Rust 也实现了 channel 用于线程间的通信。如同 golang 的口号一样: D...

  • golang数据库操作

    一、准备 1、MySQL :数据库服务端 2、MySQL Workbench:图形界面,用于连接数据库,对数据库进...

  • golang string 字符串常用操作(go练习代码)

    练习golang string常用操作,备份 类型转换 比较对比 搜索 查找 统计 替换 删除过滤 大小写转换 前...

  • SQL之DDL

    DDL是用于操作数据库以及表结构的语句 数据库操作 数据类型 表操作 一.数据库操作 查看所有数据库:SHOW D...

  • PHP与数据库

    PHP与数据库PHP有三种方式操作MySQL数据库1.PHP有三种方式操作MySQL数据库(1)MySQL扩展库(...

网友评论

      本文标题:Dlang、Rust 以及 Golang 数据库操作方式对比

      本文链接:https://www.haomeiwen.com/subject/gdrkyqtx.html