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

本文通过示例展示了DLang、Rust和Golang三种语言进行数据库插入和查询的具体实现方式,并对这些系统级语言操作数据库的便利性和语法特点进行了比较。

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

D语言(Dlang)是由Digital Mars公司开发的编程语言,起因是为了改进C++。它与C二进制兼容(不完全),可编译为本地码,有GC也可手动管理内存,语法上借鉴多种语言,模板则 在C++的基础上做了相当大的扩充。D 语言既有 C 语言的强大威力,又有 Python 和 Ruby 的开发效率。它是一种集垃圾回收、手工内存操作、契约式设计、高级模板技术、内嵌汇编、内置单元测试、Mixin 风格多继承、类 Java 包管理机制、内置同步机制、内建基本运行时信息的系统级编程语言。 D语言是一种通用的系统和应用编程语言。它是比 C++ 更高级的语言,同时还保持了生成高效代码以及直接访问操作系统API和硬件的能力。D 很适合于编写从中等规模到那些由团队合作完成、数百万行代码规模的各种程序。D 易于学习,为编程者提供了很多便利,并且适用各种野心勃勃的编译器优化技术。 D 不是脚本语言,也不是一种解释型语言。它不需要虚拟机、宗教、或者高于一切的哲学。它是给实际的编程者使用的实际的语言,它帮助编程者快速、可靠的完成易于维护、易于理解的代码。 D 是数十年来实现多种语言编译器的经验的积累,是用那些语言构造大型工程的尝试的积累。D 从那些语言(主要是 C++ )那里获得了灵感,并使用经验和现实世界中的实用性来驯服它。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值