SQLServerException: 没有为参数号 8 设置值

public String getAddMessage()
{ String str="";
Connection con;
PreparedStatement sql;
try { String uri="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=BookStore";
con=DriverManager.getConnection(uri,"sa","sa");
String insertCondition="INSERT INTO Books VALUES (?,?,?,?,?,?,?)";//数据库中第一个字段为id,设为了自动增长
sql=con.prepareStatement(insertCondition);
if(name.length()>0)
{
sql.setString(2,name);
sql.setString(3,author);
sql.setString(4,sort);
sql.setFloat(5,price);
sql.setString(6,publisher);
sql.setString(7,date);
sql.setString(8,introduction);
int m=sql.executeUpdate();
if(m!=0)
{ str="添加"+m+"条书籍信息成功";
ok=true;
}
else
{ str="添加书籍信息失败";
}
}
else
{ str="必须要有图书名称";
}
con.close();
}
catch(SQLException e)
{ str="您还没有填写书籍信息或"+e;
}
return str;
}

INSERT INTO Books VALUES (?,?,?,?,?,?,?)
你如果这个写的话,哪么你就需要把sql.setString(1,id);设值近去才行的
当然id也可以 UUID.randomUUID().toString() 这样获得的

也可以改成这样:

INSERT INTO Books(字段2~字段7) VALUES (?,?,?,?,?,?)
sql.setString(1,name);
sql.setString(2,author);
sql.setString(3,sort);
。。。。
。。。
。。