rust+mysql+prep+exec_Dlang、Rust 以及 Golang 数据库操作方式对比

本文对比了Dlang、Rust和Golang在数据库操作上的实现,包括数据插入和查询。Dlang语法简洁,Rust操作符丰富,而Golang在SELECT后需创建对象绑定。三种语言在数据库操作上各有特点,适应不同的应用场景。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值