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

时间:2022-03-28 17:21:26
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型的就能写入数据库,这是为什么,请高手帮忙解答下。。。

9 个解决方案

#1


Unknown column "dd" in 'field list' 说明在数据库里的字段(就是列名)出现错误 你先检查一下数据库是否有错 以为你插入了5个数据, 所以在数据库里需要存在相应的5个字段

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

#2


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+")"; 

#3


你这样插入不好,如果字段多了,你根本找不到那错了,建议列名写上,一般来说:要不就是类型不匹配,要不就是没有这列!

#4


varchar类型的字段插入数据库的时候要加'',int类型的不需要。
String SQLOrder = "INSERT INTO table_1 VALUES("+a+", '"+b+" ',"+c+","+d+","+e+")";

#5


String字段需要加引号的啊

#6


sql 语句错误

#7


引用 4 楼 zhoupuyue 的回复:
varchar类型的字段插入数据库的时候要加'',int类型的不需要。
String SQLOrder = "INSERT INTO table_1 VALUES("+a+",'"+b+"',"+c+","+d+","+e+")";


···

#8


int能自动转换成LONGVARCHAR
???

#9


引用 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+")";



谢谢啦,讲的很详细。。。以后有问题,还请多多帮忙哈。。

#1


Unknown column "dd" in 'field list' 说明在数据库里的字段(就是列名)出现错误 你先检查一下数据库是否有错 以为你插入了5个数据, 所以在数据库里需要存在相应的5个字段

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

#2


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+")"; 

#3


你这样插入不好,如果字段多了,你根本找不到那错了,建议列名写上,一般来说:要不就是类型不匹配,要不就是没有这列!

#4


varchar类型的字段插入数据库的时候要加'',int类型的不需要。
String SQLOrder = "INSERT INTO table_1 VALUES("+a+", '"+b+" ',"+c+","+d+","+e+")";

#5


String字段需要加引号的啊

#6


sql 语句错误

#7


引用 4 楼 zhoupuyue 的回复:
varchar类型的字段插入数据库的时候要加'',int类型的不需要。
String SQLOrder = "INSERT INTO table_1 VALUES("+a+",'"+b+"',"+c+","+d+","+e+")";


···

#8


int能自动转换成LONGVARCHAR
???

#9


引用 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+")";



谢谢啦,讲的很详细。。。以后有问题,还请多多帮忙哈。。