package xugu import ( "context" "errors" "fmt" ) func xgSockOpenConn(ctx context.Context, pConn *xuguConn) error { fmt.Println(" ---xgSockOpenConn(ctx context.Context, pConn *xuguConn)") //发送 //fmt.Printf("login database = '%s' user = '%s' password = '%s' version='201' ", pConn.Database, pConn.User, pConn.Password) // message := "login database = 'SYSTEM' user = 'SYSDBA' password = 'SYSDBA' version='201' " dsnMessage := generateLoginString(pConn.dsnConfig) _, err := pConn.conn.Write([]byte(dsnMessage)) if err != nil { return errors.New("conn 发送数据库连接失败:") } fmt.Println("数据已发送:", dsnMessage) buffer := make([]byte, 1024) n, err := pConn.conn.Read(buffer) if err != nil { return errors.New("conn 接收数据库连接相应失败:") } fmt.Println("读取数据库服务返回:", string(buffer[:n])) //SockSendCommand0(pConn, "set schema SYSTEM") return nil } func xgSockPrepare(pConn *xuguConn, sql string, prepareName *string) (int, error) { fmt.Println(">>>>>xgSockPrepare") if "" == *prepareName { ret := 0 //p_params := &conn.params if pConn.havePrepare != 0 { ret = xgCmdUnprepare(pConn, pConn.prepareName) if ret < 0 { return ret, errors.New("XG_ERROR") } pConn.prepareName = "" pConn.prepareName = fmt.Sprintf(pConn.prepareName+"STC%d", pConn.prepareNo) ret, err := xgCmdPrepare(pConn, sql, &pConn.prepareName) if err != nil { return ret, err } } return ret, errors.New("xgSockPrepare_ERROR") } ret := 0 // XGCSParam* p_params= pconn->params; old_p := pConn.havePrepare // char* sql=strdup(cmd_sql); *prepareName = fmt.Sprintf("STC%d", pConn.prepareNo) pConn.prepareNo++ // 递增 prepare_no 的值 ret, err := xgCmdPrepare(pConn, sql, &pConn.prepareName) if err != nil { return 0, err } pConn.havePrepare = old_p // this keeped by prepare_name return ret, nil }