当前位置: 首页>>代码示例>>Golang>>正文


Golang DbConnection.ExecInTx方法代码示例

本文整理汇总了Golang中github.com/blendlabs/spiffy.DbConnection.ExecInTx方法的典型用法代码示例。如果您正苦于以下问题:Golang DbConnection.ExecInTx方法的具体用法?Golang DbConnection.ExecInTx怎么用?Golang DbConnection.ExecInTx使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/blendlabs/spiffy.DbConnection的用法示例。


在下文中一共展示了DbConnection.ExecInTx方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: Invoke

// Invoke executes the statement block
func (s Statement) Invoke(c *spiffy.DbConnection, tx *sql.Tx) (err error) {
	for _, step := range s {
		err = c.ExecInTx(step, tx)
		if err != nil {
			return
		}
	}
	return
}
开发者ID:blendlabs,项目名称:spiffy,代码行数:10,代码来源:statement.go

示例2: invoke

// Invoke consumes the data file and writes it to the db.
func (dfr *DataFileReader) invoke(c *spiffy.DbConnection, tx *sql.Tx) (err error) {
	var f *os.File
	if f, err = os.Open(dfr.path); err != nil {
		return
	}
	defer f.Close()

	var stmt *sql.Stmt
	var state int

	var cursor int64
	var readBuffer = make([]byte, 32)
	var readErr error
	var lineBuffer = bytes.NewBuffer([]byte{})
	var line string
	var pieces []interface{}

	for readErr == nil {
		lineBuffer.Reset()

		switch state {
		case 0:
			cursor, readErr = dfr.readLine(f, cursor, readBuffer, lineBuffer)
			if readErr != nil {
				continue
			}
			line = lineBuffer.String()

			if spiffy.HasPrefixCaseInsensitive(line, "--") {
				continue
			}

			if spiffy.HasPrefixCaseInsensitive(line, "set") {
				continue
			}

			if spiffy.HasPrefixCaseInsensitive(line, "copy") {
				if !spiffy.HasSuffixCaseInsensitive(line, "from stdin;") {
					err = fmt.Errorf("Only `stdin` from clauses supported at this time, cannot continue.")
					return
				}

				stmt, err = dfr.executeCopyLine(line, c, tx)
				if err != nil {
					return
				}
				state = 1
				continue
			}

			err = c.ExecInTx(line, tx)
			if err != nil {
				return
			}
		case 1:
			pieces, cursor, readErr = dfr.readTabLine(f, cursor, readBuffer, lineBuffer)
			if readErr != nil {
				continue
			}

			if len(pieces) == 0 {
				err = fmt.Errorf("Empty data line, we error on this for now.")
				return
			}

			if len(pieces) == 1 && spiffy.HasPrefixCaseInsensitive(pieces[0].(string), `\.`) {
				err = stmt.Close()
				if err != nil {
					return
				}
				state = 0
				continue
			}

			_, err = stmt.Exec(pieces...)
			if err != nil {
				return
			}
		}
	}
	return nil
}
开发者ID:blendlabs,项目名称:spiffy,代码行数:83,代码来源:data_file_reader.go


注:本文中的github.com/blendlabs/spiffy.DbConnection.ExecInTx方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。