sqlite中插入单引号

通常我们在数据库中插入数据时,为了防止数据中的特殊字符导致SQL语法错误,会在插入的内容前后加上单引号。

例如我们有如下数据表:

CREATE TABLE `xs_sessions` ( `session_uuid` VARCHAR(36) NOT NULL,
	`teacher_uuid` VARCHAR(36) NOT NULL,
	`name` VARCHAR(128) NOT NULL,
	`icon_path_name` VARCHAR(255) ,
	`create_date_time` DATETIME NOT NULL,
	`modify_date_time` DATETIME NOT NULL,
	PRIMARY KEY (`session_uuid`),
	FOREIGN KEY (`teacher_uuid`) REFERENCES `xs_user` (`user_uuid`));

现在往其中插入一条数据,考虑到字段中有空格,我们会在所有value的前后都加上单引号,例如:

insert into xs_sessions values('S-01','T-01','primary english','icon_path_name','create_date_time','modify_date_time');

这样可以避免value中包含反斜杠,逗号,句号,分号等各种符号的影响,但是如果value中包含单引号则会导致语法错误。

解决办法为将单引号都改为两个单引号即可,例如上例中如果name为mary's english,那么插入语句为:

insert into xs_sessions values('S-02','T-01','mary''s english','icon_path_name','create_date_time','modify_date_time');

查询结果为:

S-02|T-01|mary's english|icon_path_name|create_date_time|modify_date_time

表示我们的插入是正确的。

官方的描述:How do I use a string literal that contains an embedded single-quote (') character?



update:

在android开发中,如果使用ContentValues来insert/update数据,则android会自动处理单引号的情况,只有在开发者手动写sql语句时才需要采取上述做法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值