当前位置: 首页 > 知识库问答 >
问题:

更新查询的动态列名

严远
2023-03-14
         Connection conn = null;
        PreparedStatement pstmt = null;

        try{
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost/netbeans","root","");



        Statement st = conn.createStatement();

         ResultSet rs = st.executeQuery("SELECT * FROM colo");

    rs = st.executeQuery("SELECT COUNT(*) FROM colo");
    // get the number of rows from the result set
    rs.next();
    int rowCount = rs.getInt(1); 

     //txt_ans.setText(String.valueOf(rowCount));
     int num_1 =300;
     int num_2 =200;
     int num_3 =300;
     int num_4 =400;
     String value = null;
     int value1 ;

     for(int i=1;i<=rowCount;i++)
     {

        String sql =("SELECT * FROM colo WHERE id = '"+i+"'");

        pstmt = conn.prepareStatement(sql);
      rs = pstmt.executeQuery(sql);
       while(rs.next())
          value = rs.getString("co1");
       //txt_ans.setText(String.valueOf(value));
       String x = "co2";
       if(value.equals("lo1"))
       {
          // value1= 1;
          // txt_ans.setText(String.valueOf(value1));


             String sql1 =("update colo set '"+x+"' = '"+num_1+"' where id = '"+i+"'");
        pstmt = conn.prepareStatement(sql1);
      int r = pstmt.executeUpdate(sql1);


       txt_ans.setText(String.valueOf(r));    

       }
       else if(value.equals("lo2"))
       {
          // value1= 1;
          // txt_ans.setText(String.valueOf(value1));
      String sql1 =("update colo set '"+ x +"' = '"+num_2+"' where id = '"+i+"'");
        pstmt = conn.prepareStatement(sql1);
      int r = pstmt.executeUpdate(sql1);


       txt_ans.setText(String.valueOf(r));    

       }
       else
       {
           value1 = 9009;
           txt_ans.setText(String.valueOf(value1));
       }


     }

共有1个答案

齐博厚
2023-03-14

问题在于对列名使用单引号,例如'x',所以只需删除它们,如下所示:

String sql1 =("update colo set " + x + " = ? where id = ?");//no single quote for x
pstmt = conn.prepareStatement(sql1);
pstmt.setString(1, num_1);
pstmt.setString(2, i);
int r = pstmt.executeUpdate(sql1);

此外,始终使用PrepareStatementSetString等。方法,用于设置推荐的值。

else if(value.equals(“lo2”))块中的另一个查询也应用相同的概念。

 类似资料:
  • 问题内容: 这种类型的东西之前已经被问过几次了,但并不是我要找的东西。我需要两行等于子查询的不同部分。 我目前正在使用: WHERE语句显然得到了简化……但是基本上它是相同的子查询,但是我不认为我应该运行两次? 我想做类似… 问题答案: 您只需将表加入子查询中即可进行一些计算,

  • OTA更新查询与下载 获取access_token 终端设备 终端设备直接接入OTA服务器应当使用Client Credentials模式,client_id为设备id,client_serect为设备令牌. App接入 如果终端设备无法直接接入OTA服务器,而通过App中转,那么App应当也使用Client Credentials模式,client_id为app_id,client_secret

  • 问题内容: 我正在尝试执行以下动态查询,但出现错误:无效的列名’cat’ 如果我将其更改为普通查询,则可以: 任何人都可以指出我的错误吗?谢谢。 问题答案: 由于是varchar,因此需要在其周围包含单引号,并且需要在sql字符串内放置该子句的右括号。 新的代码将是: 查看打印了查询字符串的SQL Fiddle演示 。这将生成一个查询字符串,如下所示:

  • 问题内容: 我有一个数据库字段名称调用,我正在尝试使用如下所示的变量名称来选择它: 显然,SQL将解释为字符串,而不是数据库的字段,我如何以这种方式将其识别为字段名而不是字符串,可能没有任何select或if语句。 问题答案: 试试这个: 您必须组成一个动态查询,并使用 要在事物的“动态”方面添加更多内容,请使用存储过程。请参见此处的示例: http://www.marten-online.com

  • 问题内容: 我已经徒劳地搜索了很长时间,不得不承认失败并寻求帮助,我正在尝试修改数据透视查询,以从具有以下数据的表中生成结果的动态查询: 为了显示这样的内容,其中页码列取决于用户访问的页面数: 我已经通过对列中的硬编码进行了管理,但是显然我不想继续更改脚本以容纳越来越多的页面。 到目前为止,我有一些类似的东西: 任何帮助或正确方向的指点将不胜感激! 提前致谢! 问题答案: 我所看到的关于动态枢轴的

  • 问题内容: 我试图找到一种方法来返回具有动态列数的记录集。我可以编写一个查询来生成需要的列名列表,如下所示: 这将返回一个简短的列表,例如’poke’,’prod’,’hit’,’drop’等。然后,我希望生成一个表,其中显示了一系列测试,其中每个测试都在其中运行。每天早晨,我们查看开发人员的工作并对其进行戳戳和刺戳,以便每天进行每次测试。我可以静态编写此查询: 但是,这是硬编码到我们每天运行的测