您现在的位置是:首页 > 文章详情

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

日期:2019-03-12点击:297

我们使用 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")`); // 打印插入数量 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 相对繁琐一些,需要几个包同时引入才可以操作数据库;相对 Rust 和 Golang 来说 Dlang 可以更方便的切换不同数据库而不需要修改业务逻辑代码。

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

原文链接:https://my.oschina.net/jiaqing/blog/3021369
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章