Comments (9)
补充下,INSERT语句是可以保存```和?的,但UPDATE语句不可以。见图:
from xorm.
markdown文件格式???请贴你的源代码,感觉是你用法有问题
from xorm.
谢谢回复。
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.
请问你使用的数据库是什么数据库?
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.
用的是postgresql 9.6数据库,使用了JSONB格式的NOSQL保存。
是转义字符的问题,插入记录时可以正确对”\等增加转义字符,修改时使用了PG的JSONB语法,导致没有增加转义字符\,但不知道如何在这种情况下增加转义字符处理,你有好的建议吗?
`
// Update JSONB data
if tsk.Data != nil {
sqlstr += ", data = data || '" + string(tsk.Data[:]) + "'"
}
`
from xorm.
你的转移字符有问题,你对比你正确运行的insert语句
'{\"content\":\"代码段开始:\\n```\\nvar str string\\n```\\n\\nHelp?Help123\"}'
你错误运行的update语句
'{"content":"代码段开始:\n```\nvar str string\n```\n\nHelp?Help123"}'
自己手写sql的话,只好自己手动转义了
from xorm.
我使用ORM的Update函数代替自己写的SQL语句解决了,多谢。
from xorm.
本来orm的update函数就会帮你转义,你自己手写的就需要你自己转义
from xorm.
是的,只能用ORM函数。
from xorm.
Related Issues (20)
- 子查询不可用 HOT 1
- no primary key for col HOT 2
- 支持sql拦截器吗 或者计划支持么 HOT 1
- 查询float类型的数据与实际的数据不一致 HOT 2
- 还继续维护吗?
- 当我使用engin.SQL(sqlStr, args...).Query().List()方法得时候,如果字段是NULL 返回得结果里面不展示为啥?
- 使用原生sql语句配合Limit函数进行数据库分页查询出错
- processor.BeforeInsert() 为什么不传入参数
- 读写分离能力与文档不符合
- 错误的test, 也没有example HOT 1
- 有没有支持schema auto migrate 功能。类似go-migrate 库做的事? HOT 1
- orm方式插入数据时未赋值的string类型字段会插入空字符串而非使用tag 定义的`default`中的值
- model支持外键
- session.QueryRows中方法查询失败后,未检查返回的core.Rows是否为nil,直接rows.close,导致panic HOT 2
- 会考虑支持CockroachDB吗? HOT 2
- 嵌套类型不能正确设值 HOT 2
- unsupported type xorm.sqlExpr, a struct
- 建议123
- ORACLE insert bug HOT 1
- 为什么engine中删除showExecTime方法 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xorm.