我需要在Eclipse中使用mvc架构编写的java swing项目中使用sql查询在记录之间导航。我该怎么做?请帮助我。Stackoverflow仍然要求我澄清,我不知道如何进一步解释
这是我代码
package model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import controller.MainController;
public class MainModel {
public Connection connection;
public PreparedStatement statement;
private static String dburl = "jdbc:mysql://localhost:3306/stok1";
private static String username = "root";
private static String password = "";
private String stockCode;
private String stockName;
private int stockType;
private String unit;
private String barcode;
private double kdv;
private String explanation;
private String createDate;
private ResultSet rs;
public String getStockCode() {
return stockCode;
}
public void setStockCode(String stockCode) {
this.stockCode = stockCode;
}
public String getStockName() {
return stockName;
}
public void setStockName(String stockName) {
this.stockName = stockName;
}
public int getStockType() {
return stockType;
}
public void setStockType(int stockType) {
this.stockType = stockType;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getBarcode() {
return barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public double getKdv() {
return kdv;
}
public void setKdv(double kdv) {
this.kdv = kdv;
}
public String getExplanation() {
return explanation;
}
public void setExplanation(String explanation) {
this.explanation = explanation;
}
public String getCreateDate() {
return createDate;
}
public void setCreateDate(String createDate) {
this.createDate = createDate;
}
public class Service {
private List<MainModel> models;
public Service() {
models = new ArrayList<>();
}
public void save (MainModel model) {
models.add(model);
}
public void copy (MainModel model) {
models.add(model);
}
public void update (MainModel model) {
for(int i=0; i<models.size();i++) {
MainModel stc = models.get(i);
if(stc.getStockCode().equals(model.getStockCode())) {
models.set(i, model);
break;
}
}
}
public void delete (MainModel model) {
for(int i=0; i<models.size();i++) {
MainModel stc = models.get(i);
if(stc.getStockCode().equals(model.getStockCode())) {
models.remove(i);
break;
}
}
}
public List<MainModel> getStocks(){
return models;
}
}
private Connection getConnection() {
try {
if(connection == null) {
connection = DriverManager.getConnection(dburl,username,password);
}
}catch (Exception ex){
Logger.getLogger(MainModel.class.getName()).log(Level.SEVERE, null, ex);
}
return connection;
}
public void save (MainModel model) {
try {
statement = getConnection().prepareStatement("select stokKodu from stockcard1 where stokKodu=?");
statement.setString(1, model.getStockCode());
ResultSet rs =statement.executeQuery();
statement = getConnection().prepareStatement("insert into stockcard1 values(?,?,?,?,?,?,?,?)");
statement.setString(1, model.getStockCode());
statement.setString(2, model.getStockName());
statement.setInt(3, model.getStockType()+1);
statement.setString(4, model.getUnit());
statement.setString(5, model.getBarcode());
statement.setDouble(6, model.getKdv());
statement.setString(7, model.getExplanation());
statement.setString(8, model.getCreateDate());
statement.executeUpdate();
//getConnection().close();
}catch (Exception ex){
Logger.getLogger(MainModel.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void copy (MainModel model) {
try {
statement = getConnection().prepareStatement("select stokKodu from stockcard1 where stokKodu=?");
statement.setString(1, model.getStockCode());
ResultSet rs =statement.executeQuery();
statement = getConnection().prepareStatement("insert into stockcard1 values(?,?,?,?,?,?,?,?)");
statement.setString(1, model.getStockCode());
statement.setString(2, model.getStockName());
statement.setInt(3, model.getStockType()+1);
statement.setString(4, model.getUnit());
statement.setString(5, model.getBarcode());
statement.setDouble(6, model.getKdv());
statement.setString(7, model.getExplanation());
statement.setString(8, model.getCreateDate());
statement.executeUpdate();
}catch (Exception ex){
Logger.getLogger(MainModel.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void update (MainModel model) {
try {
statement = getConnection().prepareStatement("update stockcard1 set stokAdi=?, stokTipi=?, birimi=?, barkodu=?, kdvTipi=?, aciklama=?, olusturmaTarihi=? where stokKodu=?");
statement.setString(1, model.getStockName());
statement.setInt(2, model.getStockType()+1);
statement.setString(3, model.getUnit());
statement.setString(4, model.getBarcode());
statement.setDouble(5, model.getKdv());
statement.setString(6, model.getExplanation());
statement.setString(7, model.getCreateDate());
statement.setString(8, model.getStockCode());
statement.executeUpdate();
//getConnection().close();
}catch (Exception ex){
}
}
public void delete (MainModel model) {
try {
statement = getConnection().prepareStatement("delete from stockcard1 where stokKodu=?");
statement.setString(1, model.getStockCode());
statement.executeUpdate();
//getConnection().close();
}catch (Exception ex){
}
}
public void nextRecord() {
try {
// Bir sonraki kayda geçiş yap
if (rs.next()) {
getStocks(barcode);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public List<MainModel> getStocks(String Stock_Code) {
try {
if (Stock_Code !=null) {
statement = getConnection().prepareStatement("select stokKodu,stokAdi,stokTipi,birimi,barkodu,kdvTipi,aciklama,olusturmaTarihi from stockcard1 where "
+ "stokKodu=? or stokAdi=?");
statement.setString(1, Stock_Code);
statement.setString(2, Stock_Code);
}
else {
statement = getConnection().prepareStatement("select * from stockcard1");
}
rs =statement.executeQuery();
List<MainModel> models = new ArrayList<>();
while(rs.next()) {
MainModel model = new MainModel();
model.setStockCode(rs.getString("stokKodu"));
model.setStockCode(rs.getString("stokKodu"));
model.setStockName(rs.getString("stokAdi"));
model.setStockType(rs.getInt("stokTipi"));
model.setUnit(rs.getString("birimi"));
model.setBarcode(rs.getString("barkodu"));
model.setKdv(rs.getDouble("kdvTipi"));
model.setExplanation(rs.getString("aciklama"));
model.setCreateDate(rs.getString("olusturmaTarihi"));
models.add(model);
}
return models;
}catch (Exception ex){
Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, null, ex);
}
return new ArrayList<>();
}
}
I searched that I could navigate with the rs.next command, but I couldn't add it to my own code.
1条答案
按热度按时间hujrc8aj1#
rs代表结果集,它是SQL查询的结果。在getStocks中,while循环遍历每一行,并将结果添加到模型列表中。您的nextRecord没有rs,因为该方法中没有变量。您调用getStocks,它以列表数组的形式返回模型列表,您可以迭代模型或只选择第一个模型单元
字符串单元=模型.get(0).getUnit
我不明白nextRecord应该做什么,但它可能还需要您首先执行一个sql查询,然后您可以执行while(rs.next()),除非您只得到一行,然后直接读取rs而不循环