问题代码如下:
PreparedStatement ps = conn.prepareStatement(
"INSERT INTO certs"/* +
" [CertData] ," +
" [PK_DUMP] ," +
" [PK_N],"+
" [PK_E],"+
" [Signature] ," +
" [Version] ," +
" [SigAlgName] ," +
" [SigAlgOID] ," +
" [SigAlgParams] ," +
" [SubjectDN] ," +
" [IssuerDN] ," +
" [CertDump] ," +
" [ServerName]) "*/ +
"VALUES (null , ? , ? , ? ,? , ? , ? , ? , ? , ? , ? , ? , ? , ?)");
ps.setBytes(1, cert.getTBSCertificate());
System.out.println(cert.getTBSCertificate().length);
if (goodPk) {
ps.setBytes(2, pk.getEncoded());
System.out.println(pk.getEncoded().length);
} else {
ps.setBytes(2, null);
}
if (rsapk != null) {
ps.setBytes(3, rsapk.getModulus().toByteArray());
ps.setBytes(4, rsapk.getPublicExponent().toByteArray());
} else {
ps.setBytes(3, null);
ps.setBytes(4, null);
}
ps.setBytes(5, cert.getSignature());
System.out.println(cert.getSignature().length);
ps.setInt(6, cert.getVersion());
ps.setString(7, cert.getSigAlgName());
System.out.println(cert.getSigAlgName().length());
ps.setString(8, cert.getSigAlgOID());
System.out.println(cert.getSigAlgOID().length());
if (cert.getSigAlgParams() != null) {
ps.setBytes(9, cert.getSigAlgParams());
System.out.println(cert.getSigAlgParams().length);
} else {
ps.setBytes(9, null);
}
ps.setString(10, cert.getSubjectDN().toString());
System.out.println(cert.getSubjectDN().toString().length());
ps.setString(11, cert.getIssuerDN().toString());
System.out.println(cert.getIssuerDN().toString().length());
ps.setString(12, cert.toString());
ps.setString(13, serverName);
return ps.executeUpdate();
你能看出这段代码有什么问题么?无论怎么改,总是提示我SQL语法出错=,=看出来了么?问题在这里:
PreparedStatement ps = conn.prepareStatement(
"INSERT INTO certs"/* +
" [CertData] ," +
" [PK_DUMP] ," +
...
" [ServerName]) "*/ +
"VALUES (null , ? , ? , ? ,? , ? , ? , ? , ? , ? , ? , ? , ? , ?)");
吧列名注释掉以后,表名和VALUES关键字后面少了一个空格!,所以无论如何都会出错……所以遇到什么奇怪的问题时不妨仔细看看代码……不要像我今天这么脑残~~


0 人次吐槽:
发表评论