DLang、Rust 以及 Golang 对比数据库操作方式[亲测有效]

DLang、Rust 以及 Golang 对比数据库操作方式[亲测有效]我们使用DLang/Rust/Golang在服务端开发的时候对数据库操作是家常便饭,而对于所谓的系统级编译型语言来说操作数据库可能没那么方便。

欢迎大家来到IT世界,在知识的湖畔探索吧!

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

欢迎工作一到五年的Java工程师朋友们加入Java程序员开发: 854393687

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用”没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

一、数据插入 – 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();
}

欢迎大家来到IT世界,在知识的湖畔探索吧!

1.2 : Rust 插入数据

欢迎大家来到IT世界,在知识的湖畔探索吧!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 查询数据

欢迎大家来到IT世界,在知识的湖畔探索吧!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#,多多学习,现在语言的学习成本已经非常低,我们应该在不同的应用场景使用更适合的开发语言。

欢迎工作一到五年的Java工程师朋友们加入Java程序员开发: 854393687

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用”没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/18064.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信