你这个是在数据库中代码可以,但是放在java中那又是什么意思,
DROP DATABASE IF EXISTS `guocui`;
CREATE DATABASE `guocui`;
USE `guocui`;
CREATE TABLE `message` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` char(10) NOT NULL,
`msg` text NOT NULL,
`email` char(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;
java怎么识别你这个代码,同志不要把java当数据库使用。
DROP DATABASE IF EXISTS `guocui`;
CREATE DATABASE `guocui`;
USE `guocui`;
CREATE TABLE `message` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` char(10) NOT NULL,
`msg` text NOT NULL,
`email` char(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;
java怎么识别你这个代码,同志不要把java当数据库使用。
解决方案 »
- log4j.properties DatePattern 无效 不能产生每日一日志
- 新手,异步问题请教!
- 如何解决参数需要一直传递下去的问题?
- ssh的小demo 里面的hibernate怎么连上数据库啊
- 关于软件设计师职称
- (struts)一个jsp表单域和actionform的问题?
- 各位帮忙.HIBERNATE深入欠出第一个例子我竟然搞不定....我发多点分
- WebService 调用
- 请教各位朋友。
- jb2005 利用ProcedureDataSet组件调用oracle9i的过程搞不定??
- 求webservice书籍或教程
- 求用Tapestry5的项目的完整源代码;有中文版电子书的更好
完全可以的,因为他可以执行sql,就这样!!!
package guocui;
import java.io.*;
import java.sql.*;
import com.sun.rowset.*;
import java.util.Properties;
import java.io.*;public class Sqls
{
public static void main(String []args)
{
try
{
Class.forName("com.mysql.jdbc.Driver");
String uri = "jdbc:mysql://"+"localhost"+":3306/"+"guocui";
Connection con;
PreparedStatement sql;
//多行语句
String manySql = "";
//sql语句,以String数组保存
String [] singleSql =
{
"DROP DATABASE IF EXISTS `guocui`;",//singleSql[0]
"CREATE DATABASE guocui ;",//singleSql[1]
"USE guocui;",//singleSql[2]
"CREATE TABLE `message` ("+
"`id` int(10) unsigned NOT NULL auto_increment,"+
"`name` char(10) NOT NULL,"+
"`msg` text NOT NULL,"+
"`email` char(50) NOT NULL,"+
"PRIMARY KEY (`id`)"+
") ENGINE=InnoDB DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;",//singleSql[3]
};
//用户名密码
con = DriverManager.getConnection(uri,"lpx","111111");
//逐个执行sql语句结果正确
//如果把多行语句加在一起,结果就错误。
for(int i=0;i<4;i++)
{
manySql += singleSql[i]; /****error****/
//sql = con.prepareStatement(singleSql[i]); /****right****/
//sql.execute(); /****right****/
}
sql = con.prepareStatement(manySql); /****error****/
sql.execute(); /****error****/
System.out.println("ok");
}
catch(Exception e)
{
System.out.println("fail");
e.printStackTrace();
}
}
}
/****error****/标注是出错的语句
/****right****/标注是正常的语句
若要调试请屏蔽错误的,或者错误的。
正确的就输出ok
错误的就输出fail错误信息如下:
fail
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 ';CREATE DATABASE guocui ;USE guocui;CREATE TAB
LE `message` (`id` int(10) unsign' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
orAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
onstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1031)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3376)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2543)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.ja
va:1737)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:998)
at guocui.Sqls.main(Sqls.java:50)
Press any key to continue...
我用插入的语句测试了能添加数据 ,应该是DDL语句不能执行
呵呵,不知道说清楚没,总感觉在execute的时候 一般会写成executeQuery(selectSQL) 或者executeUpdate(updateSQL);
DDL的么,呵呵不知道了!但记得老师说过 DLL这样不行
另外你的preparedstatement那么写基本白用了啊..
你也得弄点?号出来,然后给?号的地方赋值这样比较不容易出格式上的问题啊.
for(int i=0;i<4;i++)
{
stmt.addBatch(singleSql[i]);
}
stmt.executeBatch();
System.out.println("ok");
CREATE DATABASE `guocui`;
USE `guocui`;
CREATE TABLE `message` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` char(10) NOT NULL,
`msg` text NOT NULL,
`email` char(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;
DROP,CREATE这些是DDL语句,不能在JAVA中执行,存储过程中也是一样不能执行。
只有DML如insert,delete,update,select才能执行。
见意楼主先搞清楚SQL语言分类:
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,
数据定义语言DDL,数据控制语言DCL
数据查询语言DQL Q = Query
数据操纵语言DML M = Manipulation
事务控制语言TCL C = Control
数据定义语言DDL D = Definition
数据控制语言DCL(自动提交事务)
DMl却可以批处理。
这个解释对吗?
但最底层的东西还是不懂,故此,先结贴了。