标题: rust连接mysql数据库_DLang、Rust 以及 Golang 对比数据库操作方式 [打印本页] 作者: admin 时间: 2022-10-26 00:48 标题: rust连接mysql数据库_DLang、Rust 以及 Golang 对比数据库操作方式 我们使用 DLang / Rust / Golang 在服务端开发的时候对数据库操作是家常便饭,而对于所谓的系统级编译型语言来说操作数据库可能没那么方便,不像 PHP 和 JAVA 那样,对于比较新的三个编译型语言我们来看看效果,刚好这三个语言的语法差异比较大。. x% F4 `$ r3 ^6 D
- E' K) {4 b/ F4 s
一、数据插入 - INSERT! C5 a# P$ J# Q: y7 V" U" O6 Q
. L1 z$ C9 @0 [8 n
1.1 : DLang 插入数据. c) s5 g3 ^5 F$ X( u5 E e
( J6 f5 ]& T* z# Y! {) w. X( q
import std.stdio;, c" r7 u( Q% X V5 F4 H/ |+ u
" d0 e9 g- N! t. J9 y" {3 Jimport hunt.database; : z3 u% Z9 _9 S& ^: a 0 W) s& Q7 X; @0 nvoid main()# i4 o% R$ s9 O' Y
! x$ d# L% Q# t! }
{ 3 w }3 w( T, t. l 9 K# M% h/ J) K, H7 b5 B7 [. `9 Tauto db = new Database("mysql://root:123456@localhost:3306/test?charset=utf8mb4");+ B! E( E6 u: V1 ^0 J
6 @ o; x. V# Q5 t
int result = db.execute(`INSERT INTO user(username) VALUES("test")`); - s: P- m1 v5 I8 u6 V % V3 {8 s4 M s. g; E// 打印插入数量 : n1 _5 _% P) A, l# y" T$ b7 d O+ } J
writeln(result); * @& X0 S& `/ I$ Y4 S+ A5 `8 @' e, S% ^+ f$ W1 C
db.close();2 |' g6 K& o; C" i3 ]$ T/ Q1 `4 L
% g: t, X3 b& T0 i0 j2 j& e% n' `: s}+ q& H% _! q- k
$ M7 W% x1 e% O5 l
1.2 : Rust 插入数据 5 v+ r' ]+ _" J( A4 R 0 l9 B8 t1 m. ?4 H3 h1 g& [extern crate postgres; T) E" J2 t' m$ Q; D* Q# } * G. a6 x' F7 M! C- C; E: J; L: Muse postgres::{Connection, SslMode}; 2 t7 h, H! X) z A# N9 x& I5 ~9 j7 d
fn main() { / u/ w# N! w( a, l9 @: O& N% d3 A: Z8 Q5 J0 E% V
let conn = Connection::connect("postgres://postgres@localhost", SslMode::None).unwrap(); + N9 ^9 O1 x7 C* H8 K! \$ w9 r a9 y' E) p5 W* x. }: D6 x1 U
conn.execute("INSERT INTO user (username) VALUES (\"test\")", &[]).unwrap(); ) f% M* v! I2 H5 V8 P4 f- O, r3 s! d, s8 v! v
} q/ G, r( p/ l' O' N4 ]
9 z% l' s* ]% t7 N' k( ]) Y0 ^
1.3 : Golang 插入数据 - U @9 q2 {; n" @3 V- F. K, F5 b6 ]8 p9 i$ L/ @
import (6 J' w8 }. W+ t7 l
. f% _$ s3 S9 P, ^* a% j9 p"database/sql". B z% ~5 q- Z: k% L
' K9 b( K2 ~8 ^2 x7 H
"fmt" 5 x# ^7 w9 `/ j' r; `" M2 T5 i0 V9 F9 a5 J" ~
_ "github.com/lib/pq" " e1 m; y' h* Y7 N, M) g3 ~4 O% \ Y; b% c
"time" ; s" B6 q1 w0 o" Y3 a Z w8 A7 o # M& l1 ]% z& m) y; }"log"* h) _5 z J! ]1 {9 n v
+ s: c! Y: U `1 g7 t" K' t1 {) 3 [/ l. g1 Q2 {$ Q# c, u+ L( S ( m2 Q. h( j ?. G: m3 B& hfunc main() {2 U2 u8 {, C# j$ f" z
# L" M) o# }( }$ w, W! J
db, err := sql.Open("postgres", "user=portgres password=123456 dbname=test sslmode=disable")# ?/ x. O- o+ X7 d; ?1 u; |
/ n, t" j1 U- y4 y% G
if err != nil { - d( B' I1 U0 }) p/ d 8 B& V; ?& R! g4 @$ k, s" e" U1 Flog.Fatal(err)7 {' n7 f& ^3 n. y5 `% @6 s+ y
- C M, v' i ?: b% j
return nil" z* J* F! y9 q$ O; a
q6 \* f6 Q% Q/ K7 Q}: ~4 d' @& Q! K u3 W: A* h
, b) L1 ~: \$ ?
stmt := db.Prepare("INSERT INTO user (username) VALUES (\"test\")") 1 G6 ]2 F' Q5 f- b; c0 n/ r( F- G8 q( M. b J/ B
stmt.Exec() * ?/ j1 p# d9 D* m- P; B. h/ ~6 ~3 Z; b" M" s
stmt.Close()2 q8 `6 B; h/ Q$ a' u# j
& t. G/ c* q0 Q3 Q} 6 D0 p8 r( ~- g. F) n ; _9 ^* r5 m2 ^二、数据查询 - SELECT $ H; S0 a8 k3 ~ r( \; j4 b; Q. W D3 z" Y* G6 h O. m% Q( n
2.1 : DLang 查询数据 / J* Y$ m) F" P k) l0 T ' v) U4 V2 L' ?# G, v& X" _9 _+ himport std.stdio;9 N5 ]* A/ ?3 y
3 C% f* l* q$ f3 d6 ]2 v1 e$ w' H% C
import hunt.database; 1 `: n6 X0 d3 g+ @+ M + A4 r+ i/ W, ovoid main()6 F& E- U" b5 [* O, B
4 D- H5 a+ w7 K! K{ ( Z5 E- `* M O4 q* T ; A) d7 j4 L. b$ R7 X8 i gauto db = new Database("mysql://root:123456@localhost:3306/test?charset=utf8mb4"); 9 q* M' W' O9 t1 G; F+ g" V5 i; r3 a0 K! s
foreach(row; db.query("SELECT * FROM user LIMIT 10"))% h: z, T7 B e2 d+ q) B z
" z6 Z" b9 K' v5 W
{4 \$ E2 a; i U! X3 E* X6 P1 A' f