0 0

JDBC 中的pstmt.setString(numb,(String)list.get(j));出错0

StringBuffer sql = new StringBuffer();

sql.append("insert into " + DBNAME + "." + TABLTEST);

Connection conn = JdbcUtil.getConnection();

PreparedStatement pstmt = JdbcUtil.getPreparedStatement(conn, sql.toString());

long startTime = System.currentTimeMillis();

try {

int count = 0;
int a = 0;
List<String> list = new LinkedList<String>();
/** 读取行 */
for (int i = 0; i < cu.getRowNum(); i++) {
/** 读取行中的所有列 */
for (int x = 0; x < cu.getColLineNum(i); x++) {
String name = cu.getString(i, x); // 第一行每列的数据
// System.out.print(name);
list.add(name);
// System.out.print(name+"-");
}
System.out.println( "   ");
if(i==0){
sql.append("(");

for(int j = 0;j<list.size();j++){
sql.append(list.get(j)+", ");
}
sql.deleteCharAt(sql.length()-2);
sql.append(")");


sql.append(" values(");

for(int u = 0;u<list.size();u++){
sql.append("?,");
}
sql.deleteCharAt(sql.length()-1);
sql.append(")");
System.out.println(sql+"=");
list.clear();
}else {
for(int j = 0;j<list.size();j++){
// System.out.println(list.get(j)+"==");
int numb =j+1;
System.out.println(sql+"=");
System.out.println(j +"    " +list.get(j));
pstmt.setString(numb,(String)list.get(j));

// conn.setAutoCommit(false); // 若改为true 插入中遇到主键冲突还会继续插入,具体看需求
// pstmt.addBatch();
}
list.clear();

问题补充:报错..求解
insert into test.test(id, psw, username, realname, sex, des, hiredate, role ) values(?,?,?,?,?,?,?,?)=
0    1
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3288)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3272)
at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4108)
at batchInsertDemo.SqlTest.addBatchTest(SqlTest.java:148)
at RederContext.CsvUtil.run(CsvUtil.java:129)
at RederContext.CsvUtil.main(CsvUtil.java:139)
2012年8月30日 13:38

4个答案 按时间排序 按投票排序

0 0

采纳的答案

把 PreparedStatement pstmt = JdbcUtil.getPreparedStatement(conn, sql.toString());

放在

for(int j = 0;j<list.size();j++){  之前

2012年8月30日 13:47
0 0

是参数超出了范围
比如:
insert into test.test(id, psw, username, realname, sex, des, hiredate, role )
如果id是主键,自动增长,那么id就不需要
setStrig("id","");

2012年8月30日 13:47
0 0

类型转换错误??

2012年8月30日 13:43
0 0

什么错误?
JDBC 中的pstmt.setString(numb,(String)list.get(j));
貌似里面会有一个null
当list=null是 是一个空指针
铁错误信息

2012年8月30日 13:40

相关推荐

    jdbc练习题3.doc

    pstmt.setString(1, "liubei"); pstmt.setString(2, "liubei"); pstmt.setString(3, "刘备"); pstmt.executeUpdate(); pstmt.setString(1, "guanyu"); pstmt.setString(2, "guanyu"); pstmt.setString(3, ...

    jdbc练习题1.doc

    pstmt.setString(1, userName); // 用户名 pstmt.setString(2, pwd); // 密码 pstmt.setString(3, email); // 邮箱 pstmt.executeUpdate(); ``` 这里假设`conn`已经连接到数据库,`userName`、`pwd`和`email`...

    mysql+java课程设计学生管理系统

    pstmt.setString(1, book.getBookName()); pstmt.setString(2, book.getAuthor()); pstmt.setString(3, book.getSex()); pstmt.setFloat(4, book.getPrice()); pstmt.setInt(5, book.getBookTypeId()); pstmt....

    oracle.jdbc.driver.OracleDriver

    pstmt.setString(2, value2); pstmt.executeUpdate(); ``` 在使用完数据库资源后,记得关闭连接和相关对象,避免资源泄漏: ```java rs.close(); stmt.close(); conn.close(); ``` 此外,Oracle JDBC驱动还支持...

    数据库实验JDBC连接数据库.docx

    pstmt.setString(1, "China"); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { System.out.println(rs.getString("S_NAME")); } } ``` 3. **使用JDBC更新TPC-H数据库** - **插入记录** - 示例...

    Java连接sql数据库增删改查.pdf

    pstmt.setString(4, country.getPopulation()); pstmt.setString(5, country.getGdp()); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { try { pstmt.close(); conn...

    JDBC.rar_jdbc_simple bbs jdbc

    pstmt.setString(1, username); pstmt.setString(2, password); pstmt.executeUpdate(); ``` - **登录验证**:查询用户是否存在,并比较密码。 ```java String sql = "SELECT * FROM Users WHERE username = ? AND...

    MVC模式的实现的增删改查

    pstmt.setString(3, address); pstmt.executeUpdate(); } public void delContact(int id) throws Exception{ String sql = "delete from contact where id=?"; Connection con = DBConnection....

    jdbc_day01.rar_JDBC增删改查_MySQL与数据库连接及增删改查操作

    pstmt.setString(2, "newPassword"); pstmt.executeUpdate(); ``` - **读取(Read)**:使用SELECT语句检索数据。例如,获取所有用户: ```java String sql = "SELECT * FROM users"; Statement stmt = connection....

    JDBC PrepareStatement 使用(附各种场景 demo)

    pstmt.setString(2, user.getEmail()); pstmt.addBatch(); } pstmt.executeBatch(); ``` 在使用JDBC和PrepareStatement时,别忘了关闭资源,例如ResultSet、Statement和Connection,以避免内存泄漏。可以使用try...

    达梦驱动包Dm7 Jdbc Driver 16.jar

    2. 创建数据库连接:`Connection conn = DriverManager.getConnection(url, username, password)`,其中url是数据库的连接字符串,包含服务器地址、端口号以及数据库名。 3. 执行SQL:`Statement stmt = conn....

    jdbc增删改查加分页

    pstmt.setString(1, username); pstmt.setString(2, password); pstmt.setString(3, email); pstmt.executeUpdate(); ``` 2. **查询(Read)**:同样使用PreparedStatement,执行SELECT语句获取结果集。例如:...

    使用JDBC进行增删改查共12页.pdf.zip

    pstmt.setString(1, "testUser"); pstmt.setString(2, "testPass"); int rowsAffected = pstmt.executeUpdate(); ``` 2. 删除(Remove):使用DELETE语句,同样通过Statement的executeUpdate()执行,例如: ```java ...

    JSP对Oracle数据库的操作

    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL", "scott", "tiger"); ``` 这里的URL `"jdbc:oracle:thin:@localhost:1521:ORCL"` 是Oracle数据库的默认连接格式,其中 `...

    JDBC的例子

    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password"); ``` 接下来,使用`Statement`或`PreparedStatement`对象来执行SQL语句。`Statement`用于执行静态...

    jdbc线程池演示demo

    pstmt.setString(1, row[0]); pstmt.setString(2, row[1]); pstmt.addBatch(); } pstmt.executeBatch(); ``` - 删除:使用`PreparedStatement`或`Statement`执行删除操作。 ```java String sql = "DELETE FROM ...

    数据库操作代码

    pstmt.setString(3, "userPassword"); int rowsAffected = pstmt.executeUpdate(); ``` 更新数据: ```java String updateSql = "UPDATE UserInfo SET Name = ? WHERE Id = ?"; pstmt = conn.prepare...

    JDBC通用增删改查方法

    pstmt.setString(1, value1); pstmt.setString(2, value2); int rowsAffected = pstmt.executeUpdate(); ``` 2. 删(Delete):同样使用`PreparedStatement`,设置条件参数。例如: ```java String sql = "DELETE ...

    增删改查JDBC

    pstmt.setString(2, "password1"); pstmt.executeUpdate(); ``` 2. 读取(Read): 查询数据是通过执行SELECT语句完成的。同样,可以使用`Statement`或`PreparedStatement`,但通常推荐后者以避免SQL注入。如下所示...

    JDBC_update.rar_JAVA数据库_jdbc upda

    pstmt.setString(1, "new_value"); // 设置参数 int rowsAffected = pstmt.executeUpdate(); // 执行更新 System.out.println(rowsAffected + " rows affected."); pstmt.close(); conn.close(); } catch ...

Global site tag (gtag.js) - Google Analytics