2015-06-10 5 views
0

Я действительно смущен тем, как я смогу сделать предложение where с помощью @QueryParam. Все, что я знаю, это то, что @QueryParam используется для ввода данных пользователя. Я не смог запустить его в своем коде. Я загрузил исходный код из codezone4 и сделал его в качестве моей пробной версии. В этом исходном коде я хочу, чтобы имя было от пользовательского ввода. Я знаю параметр set. Но он ограничен. Как я смогу наложить предложение where на вход пользователя? Пожалуйста, мне очень нужна ваша помощь. :(вот код, который я скачалКак использовать ввод пользователя с помощью @QueryParam в массиве SQL Query

Access.java

package dao; 

import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.ArrayList; 

import dto.Course; 

public class Access 
{ 
public ArrayList<Course> getCourses(Connection con) throws SQLException 
{ 
    ArrayList<Course> courseList = new ArrayList<Course>(); 
    PreparedStatement stmt = con.prepareStatement("SELECT * FROM courses where name = 'based on user's input'"); //here's what I want to know and clarify 
    ResultSet rs = stmt.executeQuery(); 
    try 
    { 
     while(rs.next()) 
     { 
      Course courseObj = new Course(); 
      courseObj.setId(rs.getInt("id")); 
      courseObj.setName(rs.getString("name")); 
      courseObj.setDuration(rs.getString("duration")); 
      courseObj.setFee(rs.getDouble("fee")); 
      courseList.add(courseObj); 
     } 
    } catch (SQLException e) 
    {  
     e.printStackTrace(); 
    } 
    return courseList; 

} 
} 

Database.java

package dao; 

import java.sql.Connection; 
import java.sql.DriverManager; 

public class Database 
{ 
public Connection getConnection() throws Exception 
{ 
    try 
    { 
     String connectionURL = "jdbc:mysql://localhost:3306/codezone4"; 
     Connection connection = null; 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     connection = DriverManager.getConnection(connectionURL, "root", ""); 
     return connection; 
    } catch (Exception e) 
    { 
     throw e; 
    } 

} 

} 

Course.java

package dto; 

public class Course 
{ 
private int id; 
private String name; 
private String duration; 
private double fee; 

public Course() 
{ 

} 

public Course(int id, String name, String duration, double fee) 
{ 
    super(); 
    this.id = id; 
    this.name = name; 
    this.duration = duration; 
    this.fee = fee; 
} 

public int getId() 
{ 
    return id; 
} 

public void setId(int id) 
{ 
    this.id = id; 
} 

public String getName() 
{ 
    return name; 
} 

public void setName(String name) 
{ 
    this.name = name; 
} 

public String getDuration() 
{ 
    return duration; 
} 

public void setDuration(String duration) 
{ 
    this.duration = duration; 
} 

public double getFee() 
{ 
    return fee; 
} 

public void setFee(double fee) 
{ 
    this.fee = fee; 
} 

@Override 
public String toString() 
{ 
    return "Course [id=" + id + ", name=" + name + ", duration=" + duration 
      + ", fee=" + fee + "]"; 
} 

} 

AccessManager.java

package model; 

import java.sql.Connection; 
import java.sql.SQLException; 
import java.util.ArrayList; 

import dao.Access; 
import dao.Database; 
import dto.Course; 

public class AccessManager 
{ 
public ArrayList<Course> getCourses() throws Exception 
{ 
    ArrayList<Course> courseList = new ArrayList<Course>(); 
    Database db = new Database(); 
    Connection con = db.getConnection(); 
    Access access = new Access(); 
    courseList = access.getCourses(con); 
    return courseList; 
} 
} 

CourseService.java Я здесь, где должен использоваться @QueryParam. Я пытался использовать его

package webService; 

import java.util.ArrayList; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.QueryParam; 

import com.google.gson.Gson; 

import model.AccessManager; 

import dto.Course; 

@Path("/courseService") 
public class CourseService 
{ 
@GET 
@Path("/coursess") 
@Produces("application/json") 
public String coursess(@QueryParam("puta") String courses) 
{ 

    ArrayList<Course> courseList = new ArrayList<Course>(); 
    try 
    { 
     courseList = new AccessManager().getCourses(); 
     Gson gson = new Gson(); 
     courses = gson.toJson(courseList); 
    } catch (Exception e) 
    { 
      e.printStackTrace(); 
    } 
    return courses; 
} 
} 

ответ

0

Попробуйте что-то вроде этого:

String course ="SELECT * FROM courses where name = ?""; 
PreparedStatement stmt = con.prepareStatement(course);  
stmt.setString(1,'your input here'); 
+0

Да, я уже пробовал. Спасибо. :) но я хочу использовать @QueryParam. Потому что, когда я использовал setString, это точное значение, что, если он запущен в android? Вывод будет строкой, которую я установил? Например, я хочу имя: Кодзи. Итак, я буду использовать заданную строку. Если я реализую его для android, всегда ли это кодджи? Извините за мой английский. Пожалуйста, помогите мне. :( – user3802633

+0

Я не знаю, понял ли я вашу фактическую проблему, но из того, что вы сказали, вы имеете в виду, что вам нужно динамически устанавливать строку? .. Если да, тогда в этом случае вы можете передать значение вашему методу getCourses. не сделали разработку в android.Я говорю это с точки зрения java. – sudipta06

+0

Я уточню свой вопрос. Мне жаль, это похоже на сканирование ввода пользователя. При использовании веб-службы, особенно при входе в систему, он правильно использует queryparam? чтобы иметь возможность просматривать, был ли введенный пользователь в базе данных? Чтобы конкретно указать на мою проблему, я хочу отобразить детали таблицы, где name = входные данные, а также с помощью queryparam. Он не присваивает точные данные Возможно ли это? :( – user3802633