그래서 내 쿼리가 제대로 작동하지 않습니다. 또한 나는 아마 mySQL 주입을 일으킬 수있는 준비된 진술을 사용하지 않기 때문에 그것을 이해합니다. 앞으로 나아갈 때마다 문제가 발생할 때마다 오류가 발생합니다. 이것도 학교장을위한 것입니다. 일명 내 코딩 스타일은 아마도 최고 였지만 나는 그것에 대해 연구 중입니다.Java MySQL 쿼리 문제
public String newEmpInsert() {
return newEmpInsert;
}
private String newEmpInsert = "INSERT INTO empInfo"
+ "(firstName, lastName, SSN, address, salary, pin, empLevel, contactInfo) "
+ "VALUES ('"+firstName+"', '"+lastName+"', '"+SSN+"', '"+address+"', '"+salary+"',"
+ "'"+pin+"', '"+empLevel+"', '"+contactInfo+"')";
클래스 내에서 getter 및 setter에서 설정하는 데 사용되는 모든 변수 가운데 사람의 코드는 다음
public void newEmpInsert() {
// SQL Connection
Connection conn = null;
try {
conn = MySQL_connection_test.getConnection();
// Create a statement
Statement stmt = conn.createStatement();
stmt.executeQuery(queries.newEmpInsert());
}
catch (SQLException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("--------->>Invalid query!!!!<<--------------");
System.out.println("Your query has an error, please try again!!");
}
// Close the connection
//VERY IMPORTANT!!
finally {
try {
conn.close();
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Database closed");
}
}
내가 변수가 제대로 때문에 설정지고 확신 내 주에서 나는 다음과 같은 ...
public class TESTPACKAGE {
public static void main(String[] args) {
//declare a new instance of the procedures
SqlProcedures procedures = new SqlProcedures();
procedures.queries = new Queries();
//use the setters
procedures.queries.setFirstName("Anthony");
procedures.queries.setLastName("inner");
procedures.queries.setSSN(123451235);
procedures.queries.setAddress("1300 S Farmview");
procedures.queries.setSalary(18.00);
procedures.queries.setPin(1234);
procedures.queries.setEmpLevel(2);
procedures.queries.setContactInfo("1254569133");
System.out.println(procedures.queries.getFirstName());
System.out.println(procedures.queries.getLastName());
System.out.println(procedures.queries.getSSN());
System.out.println(procedures.queries.getAddress());
System.out.println(procedures.queries.getSalary());
System.out.println(procedures.queries.getPin());
System.out.println(procedures.queries.getEmpLevel());
System.out.println(procedures.queries.getContactInfo());
//execture a query
procedures.newEmpInsert();
}
}
WH했다 엉덩이 나는 게터를 실행하여 모든 것이 제대로 돌아가도록하고 있습니다 .. 제발 나를 도와주세요!
더 많은 코드가 필요하면 알려주세요. 포함 시키겠습니다. 나는 내가 필요한 모든 것을 포함했다고 생각한다.
다시
가
당신이 모든 문자열 값에 작은 따옴표를 사용할 필요가' ' "+ firstName을 +"' –
@AbhikChakraborty의 대답은 (모든 문자열 속성을 입력을 위해 그것을 할 필요가) 작동합니다. 문자열 연결을 사용하여 SQL 문을 더 생성하는 것은 SQL 주입 가능성을 열어 놓기 때문에 권장되지 않습니다. Prepared Statements를 대신 사용하십시오. Hibernate는 데이터베이스를 다룰 때 널리 사용되는 메커니즘이다. –
@AmilWaduwawara 나는 당신과 동의한다 !! –