问题是: 无法从表格中插入数据。从错误消息看来,它看起来没有看到第一列。我知道列在那里,数据被插入。我查了数据库。我检查了列Number
是否有一些隐藏的空间。不,它不。无法从数据库检索数据
试过: 调试每一行,一切都很好,一起插入数据到数据库。 发现的问题几乎是在代码的末尾:
rs1.next();
String s1 = rs1.getString(1);
我试着写
rs1.first();
String s1 = rs1.getString(1);
或
rs1.first();
String s1 = rs1.getString("Number");
下面我贴我的是正常工作的最终代码我可以将数据插入表格并显示在浏览器上。
package mypackage;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Collections;
import java.util.LinkedList;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
@Path("/query")
public class CList {
private LinkedList<SMember> contacts;
public CList() {
contacts = new LinkedList();
}
@GET
@Path("/{CList}")
public Response addCLocation(@QueryParam("employeeId") String eId) throws SQLException{
String dataSourceName = "DBname";
String dbURL = "jdbc:mysql://localhost:3306/" + dataSourceName;
String result = "";
Connection con = null;
PreparedStatement ps0 = null, ps = null;
ResultSet rs = null, rs1 = null;
String id = eId;
try {
try{
//Database Connector Driver
Class.forName("com.mysql.jdbc.Driver");
//Connection variables: dbPath, userName, password
con = (Connection)
DriverManager.getConnection(dbURL,"someusername","somepassword");
System.out.println("We are connected to database");
//SQL Statement to Execute
System.out.print(id);
s = con.prepareStatement("SELECT 1 FROM CList WHERE Number=?");
s.setString(1, eId);
rs = s.executeQuery();
//Parse SQL Response
if(!rs.next()) {
SMember sm = new SMember();
ps = (PreparedStatement) con.prepareStatement("INSERT
INTO Contact_List (Number, First_Name, Last_Name, Phone_Number) " +
"VALUES (?,?,?,?)");
ps.setString(1,sm.getEmployeeID());
ps.setString(2,sm.getFirstName());
ps.setString(3,sm.getLastName());
ps.setString(4,sm.getPhone());
ps.executeUpdate();
ps = con.prepareStatement("SELECT Number, First_Name,
Last_Name, Phone_Number FROM CList
WHERE Number=" + eId);
rs1 = ps.executeQuery();
while(rs1.next()){
result = "[Added contact to contact list.
Number: " + rs1.getString(1) +
"][First_Name: " + rs1.getString(2) +
"][Last_name: " + rs1.getString(3) +
"][Phone_Number: " + rs1.getString(4) +
"]\n";
}
}
else {
result = "[Contact is already on the list]";
}
}
catch(Exception e) {
System.out.println("Can not connect to database");
e.printStackTrace();
}
finally {
//Close Database Connection
ps0.close();
ps.close();
con.close();
}
}
catch(Exception e) {
System.out.println(e);
}
//Return the Result to Browser
return Response.status(1000).entity(result).build();
}
表
1234号是唯一的,它是一个数字我想。
你看到号码应该是唯一的。到目前为止,我正在从SMember类中获取数据,并且始终使用相同的数据。我的问题的目的只是为了让我几秒前插入的信息。
此外,还有SMember类,我没有发布在这里,并在其构造函数我初始化号码,名字,姓氏和电话号码。测试目的。 我做了所有建议的更改,但问题依然存在。
PM 77-1您是如何编辑它的?我不想在未来犯同样的错误。 – user1282256