V語(yǔ)言學(xué)習(xí)筆記-20內(nèi)置SQL支持

內(nèi)置SQL支持

目前僅為alpha階段,當(dāng)demo體驗(yàn)而已

V語(yǔ)言有一個(gè)內(nèi)置的ORM,目前只支持postgres和mysql,后續(xù)支持sqlite

V ORM的好處有:

  • 針對(duì)不同的數(shù)據(jù)庫(kù),統(tǒng)一的一套語(yǔ)法,這樣遷移到其他數(shù)據(jù)庫(kù)變得更容易
  • SQL語(yǔ)法內(nèi)置在V語(yǔ)言的語(yǔ)法中,不需要學(xué)習(xí)其他的語(yǔ)法
  • 安全,不可以通過注入生成SQL語(yǔ)句
  • 編譯時(shí)檢查,語(yǔ)法錯(cuò)誤在編譯時(shí)就可以被捕捉到
  • 簡(jiǎn)單易讀,不再需要手工解析結(jié)果和構(gòu)造對(duì)象
import pg
struct Customer { // 數(shù)據(jù)庫(kù)表對(duì)應(yīng)到結(jié)構(gòu)體,結(jié)構(gòu)體名目前要求跟表名一致
    id int // 第一個(gè)字段必須是一個(gè)整型的id字段
    name string
    nr_orders int
    country string
}

db := pg.connect(db_name, db_user) //連接數(shù)據(jù)庫(kù),返回DB類型

// select count(*) from Customer
nr_customers := db.select count from Customer //db.后面的就可以直接寫SQL語(yǔ)句,并返回結(jié)果集,數(shù)組
println('number of all customers: $nr_customers')

// V syntax can be used to build queries
// db.select返回一個(gè)數(shù)組
uk_customers := db.select from Customer where country == 'uk' && nr_orders > 0
println(uk_customers.len)
for customer in uk_customers {
    println('$customer.id - $customer.name')
}

customer := db.select from Customer where id == 1 limit 1
println('$customer.id - $customer.name')

//插入數(shù)據(jù)到數(shù)據(jù)庫(kù)
new_customer := Customer{name: 'Bob', nr_orders: 10}
db.insert(new_customer) 

更詳細(xì)的SQL內(nèi)容,可以參考pg章節(jié)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容