2015-11-28 179 views
0

我在从结果集中获取想要的结果时出现问题。我不知道如何编码。我的问题是我有一个具有将被提供,但文本框进入4问号的查询,但我不知道如何编写它...代码使用Java搜索SQL数据库(多文本字段搜索)

  String descr = desc.getText(); 
      String mat = matl.getText(); 
      String siz = size.getText(); 
      String prod = product.getText(); 

      String sql = "SELECT DISTINCT [Filename], [Path], D.LatestRevisionNo From Documents D INNER JOIN [dbo].[DocumentsInProjects] DP ON DP.DocumentID = D.DocumentID INNER JOIN [dbo].[Projects] P ON DP.ProjectID = P.ProjectID INNER JOIN [dbo].[VariableValue] VV ON VV.DocumentID = D.DocumentID WHERE (VV.variableID = 79 AND VV.ValueText = ?) OR (VV.variableID = 92 AND VV.ValueText = ?) OR (VV.variableID = 328 AND VV.ValueText = ?) OR (VV.variableID = 351 AND VV.ValueText = ?) GROUP BY D.Filename, P.Path, D.LatestRevisionNo HAVING COUNT(DISTINCT ValueText) = 4 AND Filename LIKE '%sld%' order by d.filename"; 
      String host = "jdbc:sqlserver://localhost:1433;databaseName=AWC_Vault;user=SVC_equivaq_cache;password=NMVBm5a5n7zURnfp0K4y;"; 
      con = DriverManager.getConnection(host); 
      PreparedStatement pstmt = con.prepareStatement(sql); 
      pstmt.setString(1, descr); 
      pstmt.setString(2, mat); 
      pstmt.setString(3, siz); 
      pstmt.setString(4, prod); 
      set = pstmt.executeQuery(); 

如何链接的DESCR,垫子,siz,刺激'?'标记在SQL字符串和我正确使用PreparedStatement?

+0

Php对于这个任务来说好得多 –

+0

你的代码看起来相当正确,它不起作用吗? – Kayaman

+0

单击该按钮时,不会将任何值输出到textarea –

回答

0

你必须检查你的列类型的数据库,并用正确的方法链接你的论点

例如:如果垫为int

,你必须使用

pstmt.setInt(2, Integer.parsInt(mat)); 

好运