Giter VIP home page Giter VIP logo

Comments (9)

rts-gordon avatar rts-gordon commented on May 25, 2024

补充下,INSERT语句是可以保存```和?的,但UPDATE语句不可以。见图:
image

from xorm.

xormplus avatar xormplus commented on May 25, 2024

markdown文件格式???请贴你的源代码,感觉是你用法有问题

from xorm.

rts-gordon avatar rts-gordon commented on May 25, 2024

谢谢回复。
1,golang执行数据库修改操作代码Exec如下:
`
func ExecuteSQL(sqlstr string) (int, error) {

if ret, err := DB().Exec(sqlstr); nil == err {
	if rows, _ := ret.RowsAffected(); rows > 0 {
		return (int)(rows), nil
	} else {
		return 0, errors.New(datatype.ErrorNotFound.Message)
	}
} else {
	//数据库或SQL错误记录日志,级别为Error。
	DB().Logger().Errorf(err.Error() + config.ToolmakerErrorLogTag)
	return 0, errors.New(datatype.ErrorDatabase.Message)
}

}
`

参数sqlstr传入的是:
UPDATE task SET updated_at = '2019-06-06 23:56:43', name = 'test123', kind = 'Task', importance = 2, emergency = 2, priority = 2, processor_id = 10004, processor = 'gordon', data = data || '{"content":"代码段开始:\n```\nvar str string\n```\n\nHelp?Help123"}' WHERE product_id = 10001 AND id = 10095

但Exec执行的代码就变成了:
UPDATE task SET updated_at = '2019-06-06 23:56:43', name = 'test123', kind = 'Task', importance = 2, emergency = 2, priority = 2, processor_id = 10004, processor = 'gordon', data = data || '{"content":"代码段开始:\n"""\nvar str string\n"""\n\nHelp$1Help123"}' WHERE product_id = 10001 AND id = 10095

2,创建记录使用的InsertOne函数如下,这个可以执行插入操作,且不会改变字符内容。
`
func (d *TaskDao) Create(session *xorm.Session, tsk *model.Task) (err error) {

if nil == session {
	if _, err = sql.DB().InsertOne(tsk); nil != err {
		sql.DB().Logger().Errorf(err.Error() + config.ToolmakerErrorLogTag)
	}
	return err
} 

`

from xorm.

xormplus avatar xormplus commented on May 25, 2024

请问你使用的数据库是什么数据库?

ret, err := engine.Exec("update user set name= name || '{\"content\":\"代码段开始:\\n```\\nvar str string\\n```\\n\\nHelp?Help123\"}' where name='myname1'")

实际执行的sql

[xorm] [info]  2019/06/07 10:08:45.787591 [SQL][0xc000170900] update user set name= name || '{"content":"代码段开始:\n```\nvar str string\n```\n\nHelp?Help123"}' where name='myname1'

我测试,数据库中的数据也更新了。你看下你sql中的转义字符是否出现问题

from xorm.

rts-gordon avatar rts-gordon commented on May 25, 2024

用的是postgresql 9.6数据库,使用了JSONB格式的NOSQL保存。

是转义字符的问题,插入记录时可以正确对”\等增加转义字符,修改时使用了PG的JSONB语法,导致没有增加转义字符\,但不知道如何在这种情况下增加转义字符处理,你有好的建议吗?

`
// Update JSONB data

if tsk.Data != nil {
	sqlstr += ", data = data || '" + string(tsk.Data[:]) + "'"
}

`

from xorm.

xormplus avatar xormplus commented on May 25, 2024

你的转移字符有问题,你对比你正确运行的insert语句

'{\"content\":\"代码段开始:\\n```\\nvar str string\\n```\\n\\nHelp?Help123\"}'

你错误运行的update语句

'{"content":"代码段开始:\n```\nvar str string\n```\n\nHelp?Help123"}'

自己手写sql的话,只好自己手动转义了

from xorm.

rts-gordon avatar rts-gordon commented on May 25, 2024

我使用ORM的Update函数代替自己写的SQL语句解决了,多谢。

from xorm.

xormplus avatar xormplus commented on May 25, 2024

本来orm的update函数就会帮你转义,你自己手写的就需要你自己转义

from xorm.

rts-gordon avatar rts-gordon commented on May 25, 2024

是的,只能用ORM函数。

from xorm.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.