`
王树雄
  • 浏览: 240083 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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();
}
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics