2017-12-11 5 views
-3

SQL 구문에 오류가 있습니다. '1,2,3,4) 값 ('2017-01-11 ','P ','P ','P ','근처에 사용할 올바른 구문을 보려면 에 해당하는 설명서를 MariaDB 서버 버전으로 확인하십시오. 'A') 'at line 1다음 예외가 발생했습니다. 해결할 수없는 값 사이에 따옴표와 쉼표를 넣으려고했습니다.

오류는 아마도 insertColumninsertValue 변수에 있습니다. 문법 권리를 얻을 수 없습니다. 아마도 변수에 따옴표가 누락되었을 수 있지만 어디에 있는지 모르겠습니다. 나는 온라인으로 다른 근원을 언급했다 그러나 시도는 실패했다. columnNames은 모든 열이있는 목록입니다. 에 따르면

String insertColumns = ""; 
String insertValues = ""; 

if(columnNames != null && columnNames.size() > 0){ 
    insertColumns += columnNames.get(0); 
    insertValues += "?"; 
} 


for(int i = 1; i < columnNames.size();i++){ 
    insertColumns += "," + columnNames.get(i) ; 
    insertValues += ","+"?"; 
} 
System.out.println(insertColumns); 
String insertSql; 
//Here is where the problem lies 
insertSql = "INSERT INTO os ("+ insertColumns+") values (" + insertValues + 
")"; 
System.out.println(insertSql);   
try{ 
PreparedStatement ps = conn.prepareStatement(insertSql); 
ps.setDate(1, sqlStartDate); 
for(int i=1;i<=no_of_stud;i++){ 
    int j=i+1; 
    int k=i-1; 
    ps.setString(j, present[k]); 
} 
+1

'System.out.println (insertSql);'의 출력은 무엇입니까? – flip

+0

String insertColumns = String.join (","columnNames);'및'String insertValues ​​= String.join (",", Collections.nCopies (columnNames.size() ")를 사용하면 많은 모호성을 제거 할 수 있습니다. ? "));'. – VGR

+0

'insertColumns + = columnNames.get (0);''insertColumns + = " '"+ columnNames.get (0) + "'";'및'insertColumns + = ","+ columnNames.get (i);''insertColumns + = ","+ " '"+ columnNames.get (i) + "'"; – Bob

답변

0

: https://mariadb.com/kb/en/library/identifier-names/

식별자 이름은 숫자로 시작할 수 있지만, 인용하지 않는 한 숫자 만 포함 할 수 없습니다.

그래서 대신

는 : insertColumns += columnNames.get(i); 당신은해야합니다

이했다.

insertColumns + = "`"+ columnNames.get (i) + "`";

첫 번째 테스트는 다른 테스트를해야합니다. 예 :

if(columnNames == null || columnNames.size() <= 0){ 
    return; 
}