在做网页,在my eclipse 中出现java.sql.SQLException: No value specified for parameter 1要怎么处理呢
Connection conn = dao.Conn.createConn();
News news = null;
ArrayList<News> list = null;
String sql = "select * from news where typeid=? limit" + (pageid-1)*pagesize+","+pagesize;
try {
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
list = new ArrayList<News>();
while(rs.next()){
news = new News();
news.setId(rs.getInt("id"));
news.setTitle(rs.getString("title"));
news.setAuthor(rs.getString("author"));
news.setTypeid(rs.getInt("typeid"));
news.setContext(rs.getString("context"));
news.setNewstype(rs.getString("newstype"));
news.setPageid(rs.getInt("pageid"));
news.setPagesize(rs.getInt("pagesize"));
list.add(news);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
return list;
} 展开
报错为:SQL第一个条件参数没有值传入。
说明参数传递的有问题或者没传递,就会报这个错误。
举例:
String sql = "select * from users where id=? and passwd=?";
rs = dealDateBase,getRS(sql, user,getUsername(),user,getUserPas());
备注:传递的参数个数必须与赋值的个数类型一致才可以,否则就会报错的。
拓展资料
第一步:新建web工程后,把mysql的连接驱动程序放在lib目录里。
第二步:编写数据库连接程序:import java,sql,Connection;
import java,sql,DriverManager;
public class DbConnection {
@SuppressWarnings("finally")
public Connection getConnection()
{
String driver ="com,mysql,jdbc,Driver";
String url="jdbc:mysql://localhost:3306/newssystem";
String user="root";
String password="0211";
Connection conn=null;
//加载驱动程序以连接数据库
try {
Class,forName( driver );
conn = DriverManager,getConnection(
url, user, password );
}
catch ( ClassNotFoundException cnfex ) {
System,err,println("数据库连接异常!!"+cnfex,getMessage());
}finally
{
return conn;
}
}
}
第三步:编写数据库操作dao类,就是对数据的增删查改。再给你举一个例子吧,这是之前做的一个小项目里,直接复制过来,你参考参考。
public class NewsDao {
Connection con;
// 添加数据
public void insertNews(News news) {
String sql = "insert into news values(0,?,?,?,now(),?,?)";
try {
DbConnection db = new DbConnection();
con = db,getConnection();
PreparedStatement ps = con,prepareStatement(sql);
ps,setString(1, news,getTitle());
ps,setString(2, news,getContent());
ps,setString(3, news,getAuthor());
//ps,setString(4, news,getDate());
ps,setString(4, news,getSort());
ps,setString(5, news,getImage());
ps,executeUpdate();
} catch (Exception e) {
System,err,println("数据库有误:" + e,getMessage());
} finally {
try {
if (con != null)
con,close();
} catch (Exception e2) {
System,err,println("数据库关闭有误:" + e2,getMessage());
}
}
}
}
第四步:在相应的操作类中调用dao类;
这是按照平时的项目实施来的,如果你只是想测试连接数据库,可以这几部综合在一起。不过最后还是按照严格的分层来吧,养成一个好习惯!
说明参数传递的有问题或者没传递,就会报这个错误。
举例:
String sql = "select * from users where id=? and passwd=?";
rs = dealDateBase.getRS(sql, user.getUsername(),user.getUserPas());
备注:传递的参数个数必须与赋值的个数类型一致才可以,否则就会报错的。
你能具体告诉我怎么添进去吗?
我不知道typeid是你在数据库定义的是什么类型,我举个例子:如果typeid在数据库中是int类型,那么就通过pst.setInt(1, 值);如果是String类型,就是pst.setString(1, 值);其他类型与此类推。。。
说明,第一个参数表示给第几个问号赋值,你这里的问号是第一个,所以写1,第二个参数,是你要查询的typeid,是什么就写什么。