Eclipse,MYSQL,jdbc,tomcat都装好了
下面是我写在Eclipse中写的程序
package cn.com.chengang.sms.dbtest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class CreatDbAndTable {
public static void main(String[] args) {
Connection con=null;
Statement sm=null;
try{
//装载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");//org.gjt.mm.mysql.Driver
//连接数据库
con=DriverManager.getConnection("jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf8","root","123456");
//创建语句对象
sm=con.createStatement();
//如果存在sms则先删除它再创建
sm.addBatch("DROP DATABASELF EXISTS sms;");
sm.addBatch("CREATE DATABASE sms;");
//将当前库转到sms
sm.addBatch("USE sms;");
//如果存在test_table表则先删除再创建
sm.addBatch("DROP TABLE IF EXISTStest_table;");
//得到创建数据表的SQL语句
StringBuffer sb=new StringBuffer();
sb.append("CREATE TABLEtest_table(");//创建test_table表"
sb.append("id int(6) unsinged NOT NULL auto_increment,");
sb.append(" name0 varchar(10) default NULL,");
sb.append(" name1 varchar(10) character set latin1 default NULL,");
sb.append(" name2 varchar(10) character set gb2312 default NULL,");
sb.append(" name3 varchar(10) character set gbk default NULL,");
sb.append(" PRIMARY KEY (id)");
sb.append(")ENGINE=innoDB DEFAULT CHARSET=utf8;");
sm.addBatch(sb.toString());
//提交执行
sm.executeBatch();
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}finally{//执行关闭操作
if(sm!=null){
try{
sm.close();
}catch(SQLException e){}
sm=null;
}
if(con!=null){
try{
con.close();
}catch(SQLException e){}
con=null;
}
}
}
}
运行后
java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TABLEtest_table(idint(6) unsinged NOT NULL auto_increment, name0 varchar(10) def' at line 1
at com.mysql.jdbc.Statement.executeBatch(Statement.java:961)
at cn.com.chengang.sms.dbtest.CreatDbAndTable.main(CreatDbAndTable.java:37)
是JDBC的问题吗?我换了个版本也不行!
------解决方案--------------------
sql语句写错了,
sb.append("CREATE TABLEtest_table(");//创建test_table表"
sb.append("idint(6) unsinged NOT NULL auto_increment,");
改成:
sb.append("CREATE TABLE test_table(");//创建test_table表"
sb.append("id int(6) unsigned NOT NULL auto_increment,");
少了两个空格,unsigned你也写错了。
呵呵,你到是哪到问呀,解决了别忘了给分呀。
以后写的时候一定要注意空格之类的
------解决方案--------------------
“You have an error in your SQL syntax ”
sql 语法错误 避免这种错误最简单的办法是 使用sql语句之前 把你的sql语句放到
数据库中执行一下