程序的主要功能是:
通过Java在sql server2005中创建一个表,然后插入数据,记录玩家一,二在各个回合中的成绩。请先看代码吧:然后请高手给我指点和建议: 
import java.sql.*;
class TestDatabase 
{
public static void main(String[] args) 
{
  try
  {
   
   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
   Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=xiao7","sa","xiao7520");
   System.out.println("Connection successfully!");
   Statement st=con.createStatement();
   st.executeUpdate("create table test2(bout int,player1 int,player2 int)");  
//bout  -- 回合   st.executeUpdate("alter test2 add column player3 int");
   st.executeUpdate("insert into test2(bout,player1,player2) values (1,20,30)");
   st.executeUpdate("insert into test2(bout,player1,player2) values (2,34,23)");
   ResultSet rs=st.executeQuery("select * from test2");   while(rs.next())
   {
    System.out.print(rs.getString("bout"));
    System.out.print(rs.getString("player1"));
    System.out.println(rs.getString("player2"));
   }
   
   rs.close();
   st.close();
   
  }
  catch (Exception e)
  {
   e.printStackTrace();
  }
}
}
javac,java后出现: 
Connection successfully!
com.microsoft.sqlserver.jdbc.SQLServerException: 'test2' 附近有语法错误。
        at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError
(Unknown Source)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(Unknown
Source)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(Un
known Source)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute
(Unknown Source)
        at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unkno
wn Source)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknow
n Source)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unkn
own Source)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeUpdate(Unknown
Source)
        at TestDatabase.main(TestDatabase.java:15)
请按任意键继续. . .经过测试:发现错误是应该是从“ st.executeUpdate”这里开始的!请高手指点迷津。

解决方案 »

  1.   

    能够输出Connection successfully!
    说明你的数据库连接成功了,
    应该是st.executeUpdate("create table test2(bout int,player1 int,player2 int)");  这个
    出问题了,executeUpdate()方法执行的是数据库操作语句(update,delete,insert),好像不执行create语句吧
      

  2.   

     st.executeUpdate("alter test2 add column player3 int");
    少了个table吧?
    alter table test2 add column player3 int
      

  3.   

    我现在把程序改得简单点:
    这样好发现问题:请看代码:import java.sql.*;
    class TestDatabase 
    {
    public static void main(String[] args) 
    {
    try
    {

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=xiao7","sa","xiao7520");
    System.out.println("Connection successfully!");
    Statement st=con.createStatement(); st.executeUpdate("create table test2(bout int,player1 int,player2 int)");
    st.executeUpdate("alter table test2 add column player3 int");
    ResultSet rs=st.executeQuery("select * from test2"); while(rs.next())
    {
    System.out.print(rs.getString("bout"));
    System.out.print(rs.getString("player1"));
    System.out.println(rs.getString("player2"));
    }

    rs.close();
    st.close();
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    }当把这句注释掉:st.executeUpdate("alter table test2 add column player3 int");
    程序不出错
    如果不注释就出错了
      

  4.   

    感谢:swandragon 他的指点,但修改后程序还是出错。
      

  5.   

    st.executeUpdate("alter table test2 add column player3 int");
    -->st.executeUpdate("alter table test2 add player3 int")column 去掉
      

  6.   

    楼上正解, alter table add  不用加column  。