Sınıfımdaki CreditCardDaoImpl'de bir JUnit testi (CreditcardDAOTest) çalıştırmaya çalışıyorum. "java.sql.SQLException: No value specified for parameter 2"
hatasını almaya devam ediyorum ama iki param olduğunu sanmıyorum. Herhangi bir yardım büyük takdir edilecektir. "ps.setLong(1, customerID);"
'dan geldiğine inandığım hata, bir "ps.setLong(x,x);"
olmalı diye farz ediyorum ama ne olması gerektiğini bilmiyorum. Ben hata ayıklama denedim ve benim deyimi için adı girişi olması gerektiği gibi görünüyor:SQL JDBC ve Java JUnit Sınama Başarısızlığı
final static String retrieveForCustomerID =
"SELECT name = ?, cc_number = ?, exp_date = ?, security_code = ?, WHERE customerID = ?;";
ama yine ben sadece hiç emin değilim. Lütfen bunu bir süredir çözmeye çalıştığımı ve sadece rehberlik yapmak istediğimi bil.
//Method in CreditCardDAOImpl
public CreditCard retrieveForCustomerID(Connection connection, Long customerID) throws SQLException, DAOException
{
if (customerID == null)
{
throw new DAOException("Trying to retrieve credit card with NULL customerID");
}
PreparedStatement ps = null;
try
{
ps = connection.prepareStatement(retrieveForCustomerID);
ps.setLong(1, customerID);
ResultSet rs = ps.executeQuery();
CreditCard cc = new CreditCard();
cc.setName(rs.getString("name"));
cc.setCcNumber(rs.getString("cc_number"));
cc.setExpDate(rs.getString("exp_date"));
cc.setSecurityCode(rs.getString("security_code"));
return cc;
}
finally
{
}
}
//Method in CreditCardDAOTest
@Test
public void testRetrieveForCustomerID() throws Exception
{
DataSource ds = DataSourceManager.getDataSource();
Connection connection = ds.getConnection();
CreditCardDAO dao = new CreditCardDaoImpl();
CreditCard ccard = dao.retrieveForCustomerID(connection, customerID);
assertNotNull(ccard);
assertNotNull(ccard.getCcNumber());
assertNotNull(ccard.getExpDate());
assertNotNull(ccard.getName());
assertNotNull(ccard.getSecurityCode());
connection.close();
}
Yani (! Rs.next()) { \t \t \t dönüş null; \t \t} – user3512367
İlk değişiklik, sorgunuzu aşağıdaki gibi güncelleştirmek ve sonuç olarak resultSet'i rs.'getXXX() 'call rs.next() olarak kullanmadan önce güncellemektir. Bu [link] (http://alvinalexander.com/blog/post/jdbc/jdbc-preparedstatement-select-like) yardımcı olmalıdır –
Bu harika! Teşekkürler! – user3512367