内容简介:我们使用 Dlang / Rust / Golang 在服务端开发的时候对数据库操作是家常便饭,而对于所谓的系统级编译型语言来说操作数据库可能没那么方便,不像 PHP 和 JAVA 那样,对于比较新的三个编译型语言我们来看看效果,刚好这三个语言的语法差异比较大。对于操作数据库来说静态类型语言的确不是很容易操作,类似C++这么多年还没有相对容易使用的数据库操作的 library,但无论 Dlang / Rust 和 Golang 都能比较全面的操作数据库。这三个语言的语法还有比较大的差异,Dlang 语法可读
我们使用 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 数据库操作方式对比》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- ASP 和 PHP 文件操作速度的对比
- SQL和Python的集合操作对比:适合的就是最好的!
- C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——删除
- C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——插入
- C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——遍历和删除
- SpringCloud或SpringBoot+Mybatis-Plus利用AOP+mybatis插件实现数据操作记录及更新对比
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Effective Java
Joshua Bloch / Addison-Wesley Professional / 2018-1-6 / USD 54.99
The Definitive Guide to Java Platform Best Practices—Updated for Java 9 Java has changed dramatically since the previous edition of Effective Java was published shortly after the release of Jav......一起来看看 《Effective Java》 这本书的介绍吧!