连接MySQL时Unknown column问题,求高手解答

03allen 2009-10-05 01:32:56
import java.sql.*;

public class A
{
public static void main(String[] args)
{
try
{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/Yang";

Connection con = DriverManager.getConnection(url,"root","03allen");
Statement stmt = con.createStatement();

String query = "select * from table_1";
ResultSet rs=stmt.executeQuery(query);

while(rs.next())
{
System.out.println(rs.getString(2));

}
int a = 111111;
String b = "dd";
int c = 111;
int d = 111;
int e = 111;
String SQLOrder = "INSERT INTO table_1 VALUES("+a+","+b+","+c+","+d+","+e+")";
stmt.executeUpdate(SQLOrder);
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
catch(SQLException e)
{
e.printStackTrace();
}

}
}

首先,数据库已经连上了,没有问题。。
数据库里五个项里,第二个类型为LONGVARCHAR。。。(MySQL里没发现String类型。。。)我在这里输入为String型的。。
出现异常:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column "dd" in 'field list'
但是,如果我把String类型的b,改成int型的就能写入数据库,这是为什么,请高手帮忙解答下。。。
...全文
1351 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangqibing0626 2009-10-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhoupuyue 的回复:]
varchar类型的字段插入数据库的时候要加'',int类型的不需要。
String SQLOrder = "INSERT INTO table_1 VALUES("+a+",'"+b+"',"+c+","+d+","+e+")";
[/Quote]

···
yangyanan1987 2009-10-05
  • 打赏
  • 举报
回复
sql 语句错误
03allen 2009-10-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 viszl 的回复:]
Java codeString SQLOrder="INSERT INTO table_1 VALUES("+a+","+b+","+c+","+d+","+e+")";
stmt.executeUpdate(SQLOrder);
格式错了,varchar的插入格式是加单引号的
如Java code"insert into v_test values (1,'viszl')";
第二个字段是varchar的
你的那个改为
Java codeString SQLOrder="INSERT INTO table_1 VALUES("+a+",‘"+b+"’,"+c+","+d+","+e+")";
[/Quote]


谢谢啦,讲的很详细。。。以后有问题,还请多多帮忙哈。。
zml2009 2009-10-05
  • 打赏
  • 举报
回复
String字段需要加引号的啊
阿_布 2009-10-05
  • 打赏
  • 举报
回复
varchar类型的字段插入数据库的时候要加'',int类型的不需要。
String SQLOrder = "INSERT INTO table_1 VALUES("+a+",'"+b+"',"+c+","+d+","+e+")";
岁月之梦 2009-10-05
  • 打赏
  • 举报
回复
你这样插入不好,如果字段多了,你根本找不到那错了,建议列名写上,一般来说:要不就是类型不匹配,要不就是没有这列!
loveofmylife 2009-10-05
  • 打赏
  • 举报
回复
String SQLOrder = "INSERT INTO table_1 VALUES("+a+","+b+","+c+","+d+","+e+")"; 
stmt.executeUpdate(SQLOrder);

格式错了,varchar的插入格式是加单引号的
"insert into v_test values (1,'viszl')";
第二个字段是varchar的

你的那个改为
String SQLOrder = "INSERT INTO table_1 VALUES("+a+",‘"+b+"’,"+c+","+d+","+e+")"; 
sforiz 2009-10-05
  • 打赏
  • 举报
回复
int能自动转换成LONGVARCHAR
???
csliyu 2009-10-05
  • 打赏
  • 举报
回复
Unknown column "dd" in 'field list' 说明在数据库里的字段(就是列名)出现错误 你先检查一下数据库是否有错 以为你插入了5个数据, 所以在数据库里需要存在相应的5个字段

还有你的sql语句有问题 正规应该是 INSERT INTO table_1 VALUES('"+a+"','"+b+"','"+c+"','"+d+"','"+e+"')

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧