2010-06-04 11 views
5

मैं इस त्रुटि हो रही है:अपवाद java.sql.SQLException: पैरामीटर सीमा से बाहर सूचकांक (1> पैरामीटर की संख्या है, जो 0)

Exception java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). 
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 com.inmobia.RSSToNews.Consumer.print(Consumer.java:92) 
at com.inmobia.RSSToNews.Consumer.main(Consumer.java:122) 

जब मैं इस वर्ग निष्पादित करने के लिए कोशिश कर रहा हूँ:

package com.in.RSSToNews; 
import java.net.URL; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.Iterator; 
import java.util.List; 
import java.net.URLConnection; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.Statement; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 

import com.sun.syndication.feed.synd.SyndEntry; 
import com.sun.syndication.feed.synd.SyndFeed; 
import com.sun.syndication.io.SyndFeedInput; 
import com.sun.syndication.io.XmlReader; 

/** 
* Consumer class from RSS/Atom feed type. 
* 
* @author Rbn 
*/ 

public class Consumer { 





SyndFeed feed; 

/** 
* Class constructor 
* 
* @param url: url path to consume 
*/ 
public Consumer(String url) { 
    super(); 
    try { 
     URL feedUrl = new URL(url); 

     SyndFeedInput input = new SyndFeedInput(); 
     feed = input.build(new XmlReader(feedUrl)); 

    } catch (Exception ex) { 
     ex.printStackTrace(); 
     System.out.println("ERROR: "+ex.getMessage()); 
    } 
} 

/** 
* print method 
* Scroll down the list of entries and displays the feed title, author and description 
*/ 
void print() { 

    //feeds list 
    List<SyndEntry> entradas = new ArrayList<SyndEntry>(); 
    entradas = feed.getEntries(); 
    try 
    { 


     //list iterator 
    Iterator<SyndEntry> it = entradas.iterator(); 
    Class.forName("org.gjt.mm.mysql.Driver"); 
    Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/newsamerica", "root", "123"); 

     if (!conexion.isClosed()) 
     { 
        while (it.hasNext()) 
         { 
          SyndEntry entrada = it.next(); 
          String title=(entrada.getTitle()); 
          String link=(entrada.getLink()); 
          String author=(entrada.getAuthor()); 
          String description=(""+entrada.getDescription()); 
          Date date=(entrada.getPublishedDate()); 
          String date2= date.toString(); 

          String content=(""+entrada.getContents()); 

          //description=description.replaceAll("SyndContentImpl.value=", ""); 
          //System.out.println(text2); 
          //System.out.println("Autor.......: " + entrada.getAuthor()); 
          // System.out.println("Noticia.......: " + entrada.getContents()); 
          // Statement st = conexion.createStatement(); 
          PreparedStatement pstmt = conexion.prepareStatement("INSERT INTO general_news(title,link,author,description,date,content) VALUES ('?','?','?','?','?','?')"); 
          pstmt.setString(1,title); 
          pstmt.setString(2,link); 
          pstmt.setString(3,author); 
          pstmt.setString(4,description); 
          pstmt.setString(5,date2); 
          pstmt.setString(6,content); 
          ResultSet rs = pstmt.executeQuery(); 
          rs.next(); 
         } 



     } 


     conexion.close(); 
} 

    catch (Exception e) 
    { 
     // Error en algun momento. 
     System.out.println("Excepcion "+e); 
     e.printStackTrace(); 
    } 
} 


public static void main(String[] args) { 

    Consumer feed = new Consumer (args[0]); 
    feed.print(); 
} 

}

+1

मदद करने के लिए खुशी हुई। StackOverflow पर उस उत्तर को स्वीकार करने के लिए कस्टम है जिसने आपकी समस्या का समाधान करने के लिए सबसे अधिक योगदान दिया है। आप उत्तर वोट के पास चेक मार्क पर क्लिक करके ऐसा करते हैं ताकि यह ठोस हरा हो जाए। –

उत्तर

12

भयानक स्वरूपण। पैरामीटर का उपयोग करते समय आप '?' नहीं डालते लेकिन बस ? डालते हैं।

लाइन बदलें:

PreparedStatement pstmt = conexion.prepareStatement("INSERT INTO general_news(id,title,link,author,description,date,content) VALUES ('?','?','?','?','?','?')"); 

PreparedStatement pstmt = conexion.prepareStatement("INSERT INTO general_news(id,title,link,author,description,date,content) VALUES (?,?,?,?,?,?)"); 

को यही कारण है कि वह सोचता है कि आप 0 मापदंडों है, लेकिन पहले निर्दिष्ट करने गया है।

यह भी ध्यान रखें कि आप INSERT निष्पादित कर रहे हैं और ऐसे में executeQuery का उपयोग नहीं करना चाहिए। इसके बजाय executeUpdate() का उपयोग करें।

+1

धन्यवाद आदमी, लेकिन अब मुझे यह त्रुटि है: Excepcion java.sql.SQLException: executeQuery() के साथ डेटा मैनिपुलेशन कथन जारी नहीं कर सकता। java.sql.SQLException: executeQuery() के साथ डेटा मैनिपुलेशन कथन जारी नहीं कर सकता। \t com.mysql.jdbc.SQLError.createSQLException पर (SQLError.java:1055) \t com.mysql.jdbc.SQLError.createSQLException पर (SQLError.java:956) \t com.mysql.jdbc.SQLError.createSQLException पर (SQLError.java:926) \t com.mysql.jdbc.StatementImpl.checkForDml पर (StatementImpl.java:412) \t com.mysql.jdbc.PreparedStatement.executeQuery पर (PreparedStatement.java:1794) – Rbn

+2

उपयोग 'executeUpdate' और 'executeQuery' नहीं। –

+0

और क्या आपके पास 'general_news' तालिका में 'शीर्षक' नामक एक कॉलम है :) यदि आप 'तालिका बनाएं' कथन पेस्ट करना चाहते हैं। –

संबंधित मुद्दे