में पैरामीटर नामित पैरामीटर मैं यह पता लगाने की कोशिश कर रहा हूं कि गो के अंतर्निहित डेटाबेस/एसक्यूएल पैकेज में नामित पैरामीटर का उपयोग करने के लिए पैटर्न क्या है। मैंने ऑरैकल ड्राइवर को देखा, लेकिन यह सी पुस्तकालय के लिए सिर्फ एक रैपर की तरह लगता है। क्या लोगों ने इसे एक सुंदर तरीके से हल किया है? अब तक मैंने यूनिट परीक्षणों में पैरामीटर के रूप में {0}
, {1}
डालकर समस्या के आसपास काम किया है, लेकिन यह सुनिश्चित करना अच्छा होगा कि उन्हें सामान्य रूप से map[string]interface{}
या कुछ के रूप में उपयोग करने में सक्षम होना अच्छा लगेगा। क्या किसी के पास कोई विचार या कार्यान्वयन है जो मूर्खतापूर्ण प्रतीत होता है?डेटाबेस/एसक्यूएल और डेटाबेस/एसक्यूएल/ड्राइवर
db := testConn()
stmt, err := db.Prepare("return {0} as int1, {1} as int2")
if err != nil {
t.Fatal(err)
}
rows, err := stmt.Query(123, 456)
if err != nil {
t.Fatal(err)
}
rows.Next()
var test int
var test2 int
err = rows.Scan(&test, &test2)
if err != nil {
t.Fatal(err)
}
if test != 123 {
t.Fatal("test != 123;", test)
}
if test2 != 456 {
t.Fatal("test2 != 456;", test2)
}
और क्या मैं Query
में कर रहा हूँ है:
func (stmt *cypherStmt) Query(args []driver.Value) (driver.Rows, error) {
cyphReq := cypherRequest{
Query: stmt.query,
}
if len(args) > 0 {
cyphReq.Params = make(map[string]interface{})
}
for idx, e := range args {
cyphReq.Params[strconv.Itoa(idx)] = e
}
...
मौजूदा उत्तर मानते हैं कि आप एक ग्राहक लिख रहे हैं, लेकिन ऐसा लगता है कि आप एक ड्राइवर लिख रहे हैं। क्या वह सही है? – andybalholm
हाँ: https://github.com/wfreeman/cq –
डेटाबेस/एसक्यूएल पैकेज स्थिति पैरामीटर के आसपास बनाया गया है, नामित पैरामीटर नहीं। तो नामित पैरामीटर का उपयोग करने के लिए कोई कामकाज लगभग परिभाषा के अनुसार unidiomatic होगा। – andybalholm