问题描述:当自己要删除某一行的数据的时候,当根据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();
}
分享到:
相关推荐
java.sql.SQLSyntaxErrorException: Unknown column 'name' in 'field list'看上去好像是name这个列是未知的,搞得我一度怀疑我是不是哪个语句写错了,然后修修改改了很久,也在网上找了资料,但是并没有解决我的...
按照网上之前版本的操作,将my.ini中的skip-...mysql> ERROR 1054 (42S22): Unknown column 'password' in 'field list' 错误原因:mysql数据库下已经没有password这个字段了,password字段改成了authentication_stri
然而,在使用 mysql 命令将导出的数据库文件导入目标数据库时,可能会出现 "ERROR at line 206: Unknown command '\' " 的错误提示。本文将详细讲解该错误的原因和解决方法。 错误原因 该错误的出现是由于字符集的...
新安装的MySQL5.7,登录时提示密码错误...in ‘field list’,原来是mysql数据库下已经没有password这个字段了,password字段改成了authentication_string 所以更改语句替换为update mysql.user set authentication_st
在MySQL 5.7.16 版本中,用户可能会遇到一个常见问题,即尝试修改MySQL root用户的密码时,系统返回错误信息“ERROR 1054 (42S22): Unknown column 'password' in 'field list'”。这个错误产生的原因是MySQL数据库...
当你通过`Class.forName()`方法加载驱动时,这个类会被初始化,使得Java应用程序能够建立到MySQL服务器的连接。 2. **数据库连接**:使用`DriverManager.getConnection()`方法,你可以创建到MySQL服务器的连接,...
然而,在某些情况下,尤其是MySQL版本更新后,可能会出现“unknown option '--skip-grant-tables'”的错误提示。这通常意味着该命令行选项在当前MySQL版本中不再支持或输入格式有误。 根据给定文件内容,我们可以...
然而,当你尝试执行一个依赖于InnoDB存储引擎的SQL文件时,如果系统报出“Error: Unknown storage engine 'InnoDB'”的错误,这意味着MySQL服务器无法识别或不支持InnoDB引擎。这通常是由于MySQL配置不当或InnoDB...
环境变量配置错误 mysql 命令行错误 ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: N
- MySQL: `CREATE INDEX index_name ON table_name (column_name);` - SQL Server: `CREATE INDEX index_name ON table_name (column_name);` - **删除索引**: - MySQL: `DROP INDEX index_name ON table_name;...
MySQL数据库系统在配置时,有时为了提高性能或者避免DNS解析带来的延迟,会在配置文件`my.ini`中启用`skip-name-resolve`选项。这个选项的作用是禁止MySQL服务器对远程主机名进行DNS解析,而是直接使用IP地址进行...
标题中的“Unknown system variable 'storage_engine'”是一个MySQL数据库错误信息,表示系统未找到名为'storage_engine'的变量。这个变量在MySQL 5.7版本中被弃用,替换为'innodb_storage_engine'。这通常是由于旧...
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'}
- MySQL:`alter table test drop column name` 8. **修改表现有列**: - SQL Server:`alter table 表名 alter column 列名 新数据库类型大小` - Oracle:`alter table 表名 modify (列名 数据类型)` - MySQL...
MySQL是一种广泛使用的关系型数据库管理系统,它提供了丰富的命令和功能,用于管理和操作数据库。以下是一些MySQL开发中的...INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); 查询数