关于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();
}
}
----------------解决方案--------------------------------------------------------
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超出范围,实在不明白啊
----------------解决方案--------------------------------------------------------