在做网页,在my eclipse 中出现java.sql.SQLException: No value specified for parameter 1要怎么处理呢

publicArrayList<News>getNewsByTypeIdAndPageId(inttypeid,intpageid,intpagesize){Connec... public ArrayList<News> getNewsByTypeIdAndPageId(int typeid,int pageid,int pagesize){
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;
}
展开
 我来答
兴语桖87
推荐于2019-09-11 · TA获得超过1.1万个赞
知道答主
回答量:88
采纳率:14%
帮助的人:3.1万
展开全部

报错为: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类;

这是按照平时的项目实施来的,如果你只是想测试连接数据库,可以这几部综合在一起。不过最后还是按照严格的分层来吧,养成一个好习惯!

198901245631
推荐于2018-02-22 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1707万
展开全部
报错为:SQL第一个条件参数没有值传入。
说明参数传递的有问题或者没传递,就会报这个错误。

举例:
String sql = "select * from users where id=? and passwd=?";
rs = dealDateBase.getRS(sql, user.getUsername(),user.getUserPas());
备注:传递的参数个数必须与赋值的个数类型一致才可以,否则就会报错的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pengzhi143neng
2014-06-25 · TA获得超过454个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:188万
展开全部
elect * from news where typeid=? limit" + (pageid-1)*pagesize+","+pagesize;里面那个问号,你都没有把参数传进去,要通过pst设置进去.
追问
你能具体告诉我怎么添进去吗?
追答
我不知道typeid是你在数据库定义的是什么类型,我举个例子:如果typeid在数据库中是int类型,那么就通过pst.setInt(1, 值);如果是String类型,就是pst.setString(1, 值);其他类型与此类推。。。

说明,第一个参数表示给第几个问号赋值,你这里的问号是第一个,所以写1,第二个参数,是你要查询的typeid,是什么就写什么。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夜尽天明915
2014-06-25 · 超过25用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:60.2万
展开全部
sql语句中有?,没给它set值,怎么查找
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式