mysql:Unknown column 'test' in 'name'

问题描述:当自己要删除某一行的数据的时候,当根据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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值