Я действительно смущен тем, как я смогу сделать предложение 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;
}
}
Да, я уже пробовал. Спасибо. :) но я хочу использовать @QueryParam. Потому что, когда я использовал setString, это точное значение, что, если он запущен в android? Вывод будет строкой, которую я установил? Например, я хочу имя: Кодзи. Итак, я буду использовать заданную строку. Если я реализую его для android, всегда ли это кодджи? Извините за мой английский. Пожалуйста, помогите мне. :( – user3802633
Я не знаю, понял ли я вашу фактическую проблему, но из того, что вы сказали, вы имеете в виду, что вам нужно динамически устанавливать строку? .. Если да, тогда в этом случае вы можете передать значение вашему методу getCourses. не сделали разработку в android.Я говорю это с точки зрения java. – sudipta06
Я уточню свой вопрос. Мне жаль, это похоже на сканирование ввода пользователя. При использовании веб-службы, особенно при входе в систему, он правильно использует queryparam? чтобы иметь возможность просматривать, был ли введенный пользователь в базе данных? Чтобы конкретно указать на мою проблему, я хочу отобразить детали таблицы, где name = входные данные, а также с помощью queryparam. Он не присваивает точные данные Возможно ли это? :( – user3802633