吐槽 MySQL数据库jdbc操作,varchar类型占位符问题——单引号造孽

  很长时间不写代码动手能力明显下降很多常见的错误还是经常发生,今天吐血了一次。

  简单的坑总是要多跳几次才能甘心。很清晰的记得大学的时候在此坑差点闷死,现在又跳进这个坑了,搞了半天终于知道错在哪里。

String sqlString = "insert into cryptcontent(content,assistentContent) value(‘asf‘,‘asfd‘)";
DBHelper.insertQuery(sqlString);

  这样操作可以的。因此占位符应该也没问题,前提占位符使用正确。代码如下(错误的):

String sqlString = String.format(
                "insert into cryptcontent(content,assistentContent) value(%s,%s)",
                assistantEncryptResultString, valueString);
DBHelper.insertQuery(sqlString);

此时怎么调试都报错,然后进行调试,报错如下:
  com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ‘afsdf‘ in ‘field list‘

Debug 调试出现:insert into cryptcontent(content,assistentContent) value(afsdf,asfasfd )

错误找到:注意后面value中的varchar类型的列的字段值没有单引号。故修正:

String sqlString = String.format(
                "insert into cryptcontent(content,assistentContent) value(‘%s‘,‘%s‘)",
                assistantEncryptResultString, valueString);        DBHelper.insertQuery(sqlString);

然后执行成功。

JAVA字符串格式化-String.format()的使用

时间: 2024-11-10 01:24:24

吐槽 MySQL数据库jdbc操作,varchar类型占位符问题——单引号造孽的相关文章

mysql数据库日期是varchar类型的时间比较查询

单纯的字符串比较结果不精确. select * from 表明 where times> '2088/12/8 10:02:40' (×) 转换函数如下(数据库为varchar): select * from h_hotelcontext where now() between STR_TO_DATE(Start_time,'%Y-%m-%d %H:%i:%s') andSTR_TO_DATE(End_time,'%Y-%m-%d %H:%i:%s'); select max(addtime) 

服务器用JDBC对mysql数据库进行操作

1:获取数据库连接 Connection connection=getConnection(); 2:准备SQL语句 3:调用Connection的creatStatement()方法获取Statement对象执行SQL语句 (注:Statement对象处理的SQL语句只能是INSERT,UPDATE或DELETE) statement=connection.createStatement(); statement.execute(SQL); 4:关闭Statement对象 5:关闭数据库连接

mysql 数据库的操作

--01 mysql 数据库的操作 -- 链接数据库 mysql -uroot -pmysql -- 不显示密码 mysql -uroot -p mysql -- 退出数据库 quit/exit/ctrl + d -- sql语句最后需要有分号;结尾 -- 显示数据库版本 version select version(); -- 显示时间 select now(); -- 查看当前使用的数据库 select database(); -- 查看所有数据库 show databases; -- 创建

mysql数据库表操作及授权

表操作:增删改查 把/etc/passwd文件的内容导入 passwd表里. mysql>load data infile"/etc/passwd" into table passwd fields terminated by ":"; 基于前面的passwd表,完成下列操作: 1:列出uid低于500且3个字母的用户 mysql> select name from passwd where uid<500 and name like "

Python对MySQL数据库的操作

Python中,可以使用MySQLdb模块连接到MySQL数据库,对MySQL数据库进行操作 [第一步] MySQL安装 参考文档: http://blog.csdn.net/Jerry_1126/article/details/20837397 [第二步]连接到MySQL 创建数据库 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.5

Mysql数据库常用操作

1.备份数据库 [[email protected] ~]# mysqldump -h 192.168.0.8 -uroot  -p'123456'  user >user.sql 2.查看mysql数据库字符集设置 mysql> show variables like 'character_set_%';+--------------------------+----------------------------+| Variable_name            | Value    

C语言对mysql数据库的操作

原文:C语言对mysql数据库的操作 这已经是一相当老的话题.不过今天我才首次使用,把今天的一些体会写下来,也许能给一些新手带来一定的帮助,更重要的是供自己今后忘记的怎么使用而进行查阅的! 我们言归正传 1.头文件: #include <stdio.h> #include <stdlib.h> #include <mysql/mysql.h> //这个是必需要包含的,下面对mysql的所有操作函数,都出自这里 2.定义一个MYSQL变量: MYSQL mysql: 这里

mysql数据库中的boolean类型

mysql数据库中没有boolean类型,用tinyint类型代替,1代表true,0代表false

Python 对mysql数据库的操作

Python 对mysql数据库的操作 #!/usr/bin/python #-*- coding: utf-8 -*- import MySQLdb class mysql:     def __init__(self,sql,host='127.0.0.1',username='root',password='root',dbname='dbname'):         self.username=username         self.password=password