问题描述:当自己要删除某一行的数据的时候,当根据id来进行删除的话。如下,例如id=6的时候。
int id=6;
String sql="delete from test where id="+id;
try {
java.sql.Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
这样执行下来是没有任何错误的。你会正确的删除掉;
但是如果你要删除数据是根据字符型,例如,字符串或者字符来删除的话,那么你写成下面的形式将会出错。
String name="test";
String sql="delete from test where name="+name;
try {
java.sql.Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
报错如下:
***********************************************
mysql:Unknown column 'test' in 'name'
*****************************************
我自己刚开始以为什么地方写错了,然后仔细看了下,没有写错,于是我就怀疑是不是多了空格,我们应该记得,对于同样的字符串如果没有进行.trim();去空格操作的话,那么我们判断看上去同样相同的字符串,比如说:
String a="ccc ";
String b="ccc";
那么a.equals(b)得到的返回值是错误的即(false),要想正确,必须,对字符串a进行去空格操作。既a.trim();
然后进行比较才会正确。
好了言归正传,回到mysql 错误,我去掉空格之后发现还是继续报错。
然后,我自己上网搜了一通未果,最后,有一位大牛的一句话点醒了我:“他说,字符串和整形是不一样的,我们必须对其加上单引号(‘’)”,接下来,我自己似乎明白了什么,将语句改动为下面的形式。我再次运行的时候,奇迹出现了。成功删除!在此,可以得出结论,在mysql中当比较两个字符串是否相等时,那么就算你已经定义了属性值它是字符串,如这儿的String name="test";但是还是不能直接写成和整形比较一样的形式,而应该在前后加上单引号;看紫红色部分。
String name="test";
String sql="delete from test where name='"+name+"'";
try {
java.sql.Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
分享到:
相关推荐
按照网上之前版本的操作,将my.ini中的skip-...mysql> ERROR 1054 (42S22): Unknown column 'password' in 'field list' 错误原因:mysql数据库下已经没有password这个字段了,password字段改成了authentication_stri
java.sql.SQLSyntaxErrorException: Unknown column 'name' in 'field list'看上去好像是name这个列是未知的,搞得我一度怀疑我是不是哪个语句写错了,然后修修改改了很久,也在网上找了资料,但是并没有解决我的...
主要介绍了MySQL 5.7.16 修改密码提示 ERROR 1054 (42S22): Unknown column 'password' in 'field list'的原因分析及解决办法,需要的朋友可以参考下
新安装的MySQL5.7,登录时提示密码错误...in ‘field list’,原来是mysql数据库下已经没有password这个字段了,password字段改成了authentication_string 所以更改语句替换为update mysql.user set authentication_st
mysql数据库报ERROR 1045 (28000): Access denied for user ‘ODBC’@’localhost’ (using password: NO) 看到网上说要配置my.ini 我的是win10系统,用的是mysql-5.7.18-winx64mysql 文件里没有my.ini,在网上看到...
mysql导入sql数据库出错的解决办法
ERROR 1054 (42S22): Unknown column *** in 'where clause' ERROR 1064 (42000): You have an error in your SQL syntax; ERROR 1072 (42000): Key column '***' doesn't exist in table ERROR 1142 (42000): ...
mysql-connector-java-5.1.47用jdbc语言连接数据库的一种工具包
mysql Error Code : 1060 Duplicate column name 'ID'
环境变量配置错误 mysql 命令行错误 ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: N
主要介绍了mysql 加了 skip-name-resolve不能链接数据库问题的解决方法,需要的朋友可以参考下
MySQL是一种广泛使用的关系型数据库管理系统,它提供了丰富的命令和功能,用于管理和操作数据库。以下是一些MySQL开发中的...INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); 查询数
- {name: test1, replicate: true} - {name: test2, replicate: false} - {name: test3, replicate: false} 配置同步账号 mysql_user: - {name: repl, passwd: repl, priv: '*.*:REPLICATION SLAVE'}
#资源达人分享计划# jdbc驱动,mysql连接数据库,该版本比较高,可弥补一些bug 主要结合博文进行学习
MySQL是一种广泛使用的关系型数据库管理系统,它提供了丰富的命令和功能,用于管理和操作数据库。以下是一些MySQL开发中的...INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); 查询数