用java语句在access中怎么创建表啊,大赛的题目求解?
这是第七届信息技术大赛的题目,不知道我做的为什么创建不了数据表?老是报:[Microsoft][ODBC Microsoft Access Driver] 字段定义语法错误。求高手指教?
在Access2003中创建一个新数据库,名为员工库.mdb。配置ODBC驱动源,连接到员工库上。编写程序,使用JDBC-ODBC桥驱动程序,在Access数据库中创建员工表,并通过程序向表中插入如下数据。表的结构和示例数据如下所示:
员工表:
使用Java语言编写程序,在员工库中创建员工表,插入上述3条记录,然后查询表数据并显示。具体要求如下:
(1)使用JDBC-ODBC桥驱动程序;
(2)通过程序,在员工库中创建员工表,表结构如上所示;
(3)通过程序读取表结构信息并显示;
(4)使用PreparedStatement语句来插入3条记录;
(5)查询出表中所有记录,并按照主键升序显示。
参考提示代码:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")
Connection conn=DriverManager.getConnection("jdbc:odbc:employees","","")
【分 数】20分
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class T6 {
public static Connection conn;
public static void main(String[] args) throws ClassNotFoundException,
SQLException {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:employees");
createTable();
String sql = "insert into employee values(1001,'Jerry','jerry@126.com',3000,'1982-05-18')";
insert(sql);
sql = "insert into employee values(1002,'Mike','Mike@126.com',3400,'1985-08-18')";
insert(sql);
sql = "insert into employee values(1003,'John','John@126.com',3200,'1982-09-18')";
insert(sql);
sql = "select * from employee order by emloyee_id asc";
query(sql);
}
public static void createTable() throws SQLException {
Statement stmt = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
String sql = "create table employee(emloyee_id Integer primary key,name varchar(10) not null,email varchar(30),salary Integer,date Date)";
boolean result = stmt.execute(sql);
if (result)
System.out.println("成功创建员工表");
else
System.out.println("创建员工表失败");
}
public static void insert(String sql) throws SQLException {
PreparedStatement ps = conn.prepareStatement(sql);
int result = ps.executeUpdate();
if (result > 0)
System.out.println("插入数据成功");
else
System.out.println("插入数据成功");
}
public static void query(String sql) throws SQLException {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
System.out.println("员工号\t员工姓名\t员工邮箱\t员工工资\t员工生日");
while (rs.next()) {
System.out.println(rs.getInt(1) + "\t" + rs.getString(2) + "\t"
+ rs.getString(3) + "\t" + rs.getInt(4) + "\t"
+ rs.getString(5));
}
}
}
[解决办法]
public static void createTable() throws SQLException {
Statement stmt = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
String sql = "create table employee(emloyee_id Integer primary key,name varchar(10) not null,email varchar(30),salary Integer,date Date)";
boolean result = stmt.execute(sql);
if (result)
System.out.println("成功创建员工表");
else
System.out.println("创建员工表失败");
}
result返回的结果不是你那样理解的。若返回true表示返回的是个结果集,查api.
数据库表这样创建应该没啥问题。我也参加复试了
[解决办法]
编写程序,使用JDBC-ODBC桥驱动程序,在Access数据库中创建员工表,并通过程序向表中插入如下数据。
看这题出的蛋疼,题目要求就是程序中生成表。