当前位置: 代码迷 >> Java相关 >> 关于java写入sql2005数据库的问题
  详细解决方案

关于java写入sql2005数据库的问题

热度:409   发布时间:2008-04-26 00:13:13.0
关于java写入sql2005数据库的问题
以下是小弟写的一段在sql2005数据库中插入数据的程序,但总是输出catch捕捉异常的语句块中的内容,就是影响不到数据库,请大家帮我看看,我到底错在哪了呢。前提,我的数据源设置都是对的,因为写查询语句是正常的。
import java.sql.*;

public class ConnectionDataBase
{
    public void writeData()
    {
        Connection con=null;
        PreparedStatement pstm=null;
        try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }
        catch(ClassNotFoundException e){System.out.println("c");}
        try
        {
            con=DriverManager.getConnection("jdbc:odbc:computer","sa","");
            pstm=con.prepareStatement("insert into image_1(bb) values(@bb)");
            pstm.setInt(3, 5);
            pstm.executeUpdate();
            pstm.close();
            con.commit();
            con.close();
        }
        catch(Exception e){System.out.print("b");}
    }
        public static void main(String []args){
           ConnectionDataBase cc=new ConnectionDataBase();
           cc.writeData();
        }
}
搜索更多相关的解决方案: java  数据库  con  catch  java  数据库  con  catch  

----------------解决方案--------------------------------------------------------
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");你在创建SQLServer的实例时就已经错了,好好看一下数据库的连接!
----------------解决方案--------------------------------------------------------
谢谢楼上朋友的帮忙
既然是那里错了,那为什么写查询的SQL语句就是正确的呢,还有就是,如果是那里错,为什么输出的异常信息是b,而不是c呢
----------------解决方案--------------------------------------------------------
程序换成了这样
import java.sql.*;

public class ConnectionDataBase
{
    public void writeData()
    {
        Connection con=null;
        PreparedStatement pstm=null;
        try
        {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        }
        catch(ClassNotFoundException e){System.out.println("c");}
        try
        {
            con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=image");
            System.out.println("数据库连接成功");
            pstm=con.prepareStatement("insert into image_1(ID) values(@ID)");
            pstm.setString(1,"11");
            pstm.execute();
            pstm.close();
            con.commit();
            con.close();
        }
        catch(SQLException se)
        {
            se.printStackTrace();
        }
    }
    public static void main(String []args)
    {
        ConnectionDataBase cc=new ConnectionDataBase();
        cc.writeData();
    }
}
还是错误,以下是错误信息:com.microsoft.sqlserver.jdbc.SQLServerException: 索引 1 超出范围。
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setterGetParam(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setString(Unknown Source)
    at ConnectionDataBase.writeData(ConnectionDataBase.java:20)
    at ConnectionDataBase.main(ConnectionDataBase.java:34)

说这里的pstm.setString(1,"11");索引1超出范围,实在不明白啊
----------------解决方案--------------------------------------------------------
  相关解决方案