GVKun编程网logo

在mysql查询中传递java字符串变量(java mysql查询语句)

11

以上就是给各位分享在mysql查询中传递java字符串变量,其中也会对javamysql查询语句进行解释,同时本文还将给你拓展android–如何在sql查询中传递逗号分隔的字符串值?、c#-如何在查

以上就是给各位分享在mysql查询中传递java字符串变量,其中也会对java mysql查询语句进行解释,同时本文还将给你拓展android – 如何在sql查询中传递逗号分隔的字符串值?、c#-如何在查询字符串中传递json?、php – 在mysql查询中使用IF条件、php – 在mysql查询中使用变量作为列名等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

在mysql查询中传递java字符串变量(java mysql查询语句)

在mysql查询中传递java字符串变量(java mysql查询语句)

如何在sql查询中传递java字符串变量。我已经完成了所有JDBC连接。

我的SQL数据库查询是

sql = "Select *        from production AS cust        INNER JOIN location AS comp        ON cust.location_id = comp.location_id        where comp.name = locationnames AND crop_id =1";

它不起作用。但是,如果我执行以下代码,其工作原理

sql = "Select *        from production AS cust        INNER JOIN location AS comp        ON cust.location_id = comp.location_id        where comp.name = "\taplejung"\         AND crop_id =1";

现在告诉我如何将变量名传递给sql查询以执行此操作。Jst告诉我如何将变量locationnames传递给comp.name。

我完整的Java函数如下所示:locationCombo表示在组合框中选择的项目。CropCombo也表示相同的…

public void displayYearwise() throws SQLException, ClassNotFoundException{       //jComboBox4.setSelectedItem("Crops");        //DefaultCategoryDataset dataset = new DefaultCategoryDataset();         XYSeriesCollection dataset = new XYSeriesCollection();         XYSeries series = new XYSeries("production");         XYSeries series1 = new XYSeries("scat");        String JDBC_DRIVER="com.mysql.jdbc.Driver";    String DB_URL="jdbc:mysql://localhost/data2";    Connection conn;    Statement stmt;    String USER = "root";    String PASS = "";        Object cropname = CropCombo.getSelectedItem();       String cropnames = cropname.toString();       Object locationname = locationCombo.getSelectedItem();       //       String locationnames = locationname.toString();       String locationnames = "taplejung";       String pd="paddy ";            System.out.println(cropnames.length()+" "+pd.length());            System.out.println(cropsList);         String sql=null;         if(cropnames.equals("paddy"))         {             //System.out.println();                                  sql="Select *                   from production AS cust                   INNER JOIN location AS comp                   ON cust.location_id = comp.location_id                   WHERE comp.name = "+locationnames+"                   AND crop_id =1";         }          else{          sql="SELECT *                FROM `production`                WHERE crop_id = 4                AND location_id = 10";         }           try{            Class.forName(JDBC_DRIVER);            conn=DriverManager.getConnection(DB_URL,USER,PASS);            System.out.println("Creating statement...");            stmt = conn.createStatement();                                              System.out.println(sql);                                     ResultSet rs=stmt.executeQuery(sql);                                              while (rs.next()){                            //String student = rs.getString("studentname");                            String yeartext = rs.getString("year_of_production");                            //double value = Double.parseDouble(text);                            String productiontext = rs.getString("production_amount");                            Double yield = rs.getDouble("yield_amount");                            double production = Double.parseDouble(productiontext);                            double year = Double.parseDouble(yeartext);                            series.add(year,production) ;                            series1.add(year,yield) ;                            //dataset.addSeries(series);                           }                        dataset.addSeries(series);                        dataset.addSeries(series1);                             chartArea.removeAll();                       JFreeChart chart = ChartFactory.createScatterPlot("Scatter Plot","Year","Paddy Production", dataset);                       // JFreeChart chart = ChartFactory.createScatterPlot("Scatter Plot","Year","Paddy Production", dataset, PlotOrientation.HORIZONTAL, rootPaneCheckingEnabled, rootPaneCheckingEnabled, rootPaneCheckingEnabled);//                        CategoryPlot p = chart.getCategoryPlot();                         //XYPlot xyplot = (XYPlot)jfreechart.getPlot();                        //http://stackoverflow.com/questions/12417732/jfreechart-with-scroller                        ChartPanel chartPanel = new ChartPanel(chart, false);                        chartArea.setLayout(new BorderLayout());                        chartArea.add(chartPanel, BorderLayout.EAST);                        chartArea.add(chartPanel);                        SwingUtilities.updateComponentTreeUI(this);//                        p.setRangeGridlinePaint(blue);                        chartArea.updateUI();                        System.out.println("Database created successfully...");                }           catch(SQLException se)                {                    //Handle errors for JDBC                    System.out.println("Connect failed ! ");                    se.printStackTrace();//                    JOptionPane.showMessageDialog(MajorUI.this, err.getMessage());                    }    }

答案1

小编典典

使用PreparedStatement并绑定String参数,

final String sql = "select * from production AS cust INNER JOIN location"    + " AS comp ON cust.location_id = comp.location_id where "    + "comp.name = ? AND crop_id = 1";PreparedStatement ps = null;try {  ps = conn.prepareStatement(sql);  ps.setString(1, "taplejung");} catch (Exception e) {  e.printStackTrace();} finally {  if (ps != null) {    try {      ps.close();    } catch (Exception ignored) {    }  }}

编辑 (根据您的其他代码,将其更改为类似内容)

PreparedStatement ps = null;String sql = null;if (cropnames.equals("paddy")) {  // System.out.println();  sql = "SELECT * FROM `production` AS cust INNER JOIN location AS comp "      + "ON cust.location_id = comp.location_id WHERE comp.name = "      + "? AND crop_id = 1";} else {  sql = "SELECT * FROM `production` WHERE crop_id = 4 AND location_id = 10";}ps = conn.prepareStatement(sql);if (cropnames.equals("paddy")) {  ps.setString(1, locationnames);}System.out.println(sql);ResultSet rs = ps.executeQuery();

android – 如何在sql查询中传递逗号分隔的字符串值?

android – 如何在sql查询中传递逗号分隔的字符串值?

我创建一个与数据库相关的应用

在这个我创建简单的数据库并使用in SQL查询从数据库中获取值.

我的问题在于我得到了像“2,6,8,9,10”这样的字符串.
首先我将这个字符串拆分并存储在一个arraylist中.用逗号.
在这个arraylist后我与逗号合并,如2,10这个.

我做的很好.
我在查询中使用此字符串来从数据库中获取值.
我的疑问是

SELECT tm.icon,tm.topic_no,td.topic_id,td.name FROM topicmaster tm,topicmaster_description td  WHERE td.topic_id =tm.topic_id AND  td.langid=''3'' AND tm.oraganisationid =''1'' AND  td.topic_id in(2,10);

这个.

但当我通过合并字符串时,它看起来像一个

SELECT tm.icon,topicmaster_description td  WHERE td.topic_id =tm.topic_id AND  td.langid=''3'' AND tm.oraganisationid =''1'' AND  td.topic_id in(''2,10'');

所以我无法运行查询,因为原因中的传递值不同.
在上面的查询工作正常,因为它像ain(2,10)
在第二个它看起来像ain(‘2,10’)
那么该怎么办.
如何从字符串中删除这个’`

首先我分裂字符串

//getTopicFile ArrayList with 
    public  ArrayList<String> getAssignTopicArrayList(String passstring) 
    {
        ArrayList<String> rtnArrayList=new ArrayList<String>();
        try 
        {
            StringTokenizer strTokens = new StringTokenizer(passstring,",");
            while (strTokens.hasMoreElements()) 
            {
                rtnArrayList.add(String.valueOf(strTokens.nextToken()));
            }
        } catch (Exception ex) 
        {
            ex.printstacktrace();
            System.err.println("Error in Fetch ArrayList-->"+ex.toString());
        }
        return rtnArrayList;
    }       
    //getTopicFile ArrayList with

在我合并New String之后

genHelper.showErrorLog("Assign Topic-->"+chapterassignTopicName);
        ArrayList<String> getTopicList=genHelper.getAssignTopicArrayList(chapterassignTopicName);

        String passConcat = "";
        for (int i = 0; i < getTopicList.size(); i++) 
        {
            System.out.println("Topic List--->"+getTopicList.get(i));

            if(getTopicList.size()==1)
            {
                passConcat=passConcat.concat(String.valueOf(getTopicList.get(i)));
            }
            else
            {
                if(getTopicList.size()-1 == i)
                {
                    System.err.println("value if --> " + i);
                    passConcat=passConcat.concat(String.valueOf(getTopicList.get(i)));
                }else {
                    System.err.println("value else--> " + i);
                    passConcat=passConcat.concat(String.valueOf(getTopicList.get(i)).concat(","));
                }
            }
        }

        genHelper.showErrorLog("PassConcat String-->"+passConcat);

然后我得到了New String并在下面传递查询

String topicQuery="SELECT tm.icon,topicmaster_description td  WHERE td.topic_id =tm.topic_id AND  td.langid=''"+LanguageActivity.languageId+"'' AND tm.oraganisationid =''"+genHelper.loadPreferences(String.valueOf(R.string.sharePrefin_Login_organizationid))+"'' AND  td.topic_id in(''"+passConcat+"'')";

解决方法

不应该

String topicQuery="SELECT tm.icon,topicmaster_description td  WHERE td.topic_id =tm.topic_id AND  td.langid=''"+LanguageActivity.languageId+"'' AND tm.oraganisationid =''"+genHelper.loadPreferences(String.valueOf(R.string.sharePrefin_Login_organizationid))+"'' AND  td.topic_id in(''"+passConcat+"'')";

String topicQuery="SELECT tm.icon,topicmaster_description td  WHERE td.topic_id =tm.topic_id AND  td.langid=''"+LanguageActivity.languageId+"'' AND tm.oraganisationid =''"+genHelper.loadPreferences(String.valueOf(R.string.sharePrefin_Login_organizationid))+"'' AND  td.topic_id in("+passConcat+")";

c#-如何在查询字符串中传递json?

c#-如何在查询字符串中传递json?

我试图通过使用Jquery.param将JSON编码为URI来将JSON发送到服务器,但出现以下错误.

window.location.href = BriefExportPath+$.param(JSON.stringify({
                        title: $('.ui-dialog-title').text(),
                        items: ko.utils.arrayMap(Neptune.BriefCountrySection.SelectedCountries(), function (item) {
                            return item.ItemName
                        })
                    }))



[CustomAuthorize(DeFinitions.RoleSonaradmin)]
        public FileContentResult ExportCsv(string json)
        {
            var x = new System.Web.Script.Serialization.JavaScriptSerializer();
            object obj = x.DeserializeObject(json);
            //return File(Helpers.BriefCsvBytes.GetCsvBytes(items), "text/csv", title); 
            return null;
        }



http://dev.neptune.local/Briefs/ExportCsv?0=%7B&1=%22&2=t&3=i&4=t&5=l&6=e&7=%22&8=%3A&9=%22&10=B&11=r&12=i&13=e&14=f&15=+&16=C&17=o&18=u&19=n&20=t&21=r&22=y&23=+&24=L&25=i&26=s&27=t&28=%22&29=%2C&30=%22&31=i&32=t&33=e&34=m&35=s&36=%22&37=%3A&38=%5B&39=%22&40=A&41=f&42=r&43=i&44=c&45=a&46=%22&47=%2C&48=%22&49=A&50=m&51=e&52=r&53=i&54=c&55=a&56=s&57=%22&58=%2C&59=%22&60=A&61=s&62=i&63=a&64=%22&65=%2C&66=%22&67=E&68=u&69=r&70=o&71=p&72=e&73=%22&74=%5D&75=%7D

解决方法:

从jQuery.param()的手册中:

Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request.

您正在传递给它JSON.stringify的返回值,它是一个字符串.

您需要给它传递一个对象.

var json = JSON.stringify(etc etc);
var url = BriefExportPath + $.param( { "json": json } );
location = url;

然后,您的服务器端代码将需要从json查询键中提取数据.

php – 在mysql查询中使用IF条件

php – 在mysql查询中使用IF条件

嗨,我正在尝试加入表,取决于另一个表的值.在我的场景中,我希望在message.type是job的情况下加入表job,并使用table post_ads连接.我写了下面的MySql查询,但它的抛出语法错误.请帮忙.

 SELECT message.*,register.name, rg.name as to_user_name, post_ads.*
 FROM message 
 INNER JOIN register ON message.from_user_id = register.id 
 INNER JOIN register rg ON message.to_user_id = rg.id LEFT JOIN 

 CASE message.type WHEN 'job' THEN 

 SELECT 'job.title' as titles FROM job 
 WHERE (message.`from_user_id` = '196' AND message.`to_user_id` = '218') OR 
 (message.`from_user_id` = '218' AND message.`to_user_id` = '196')

  ELSE

  SELECT 'post_ads.brand_category, post_ads.model_category, post_ads.titles, 
  post_ads.images, post_ads.ads_main_pic'  FROM post_ads  
  WHERE (message.`from_user_id` = '196' AND message.`to_user_id` = '218') OR 
  (message.`from_user_id` = '218' AND message.`to_user_id` = '196')

  END as post_ads

解决方法:

首先,您滥用了案例陈述.它应该在select语句中不在左连接中.
2,当我们使用case语句时,你不能选择多个字段. – 要解决这个问题,您可以将CONCAT功能与用户定义的容器一起使用,并在服务器端脚本中进行操作.@H_301_12@

您应该编写类似下面的查询,

SELECT message.*,register.name, rg.name AS to_user_name, post_ads.*,

CASE `message`.`type` WHEN 'job' THEN 

(SELECT job.title  FROM job 
WHERE (message.`from_user_id` = '196' AND message.`to_user_id` = '218') OR 
(message.`from_user_id` = '218' AND message.`to_user_id` = '196')) 

ELSE

(SELECT  post_ads.titles FROM post_ads  
WHERE (message.`from_user_id` = '196' AND message.`to_user_id` = '218') OR 
(message.`from_user_id` = '218' AND message.`to_user_id` = '196'))

END AS post_ads

FROM message 
INNER JOIN register ON message.from_user_id = register.id 
INNER JOIN register rg ON message.to_user_id = rg.id 

php – 在mysql查询中使用变量作为列名

php – 在mysql查询中使用变量作为列名

我试图改变这个:

"SELECT username FROM $table WHERE username='$newName'"

进入:

"SELECT $column FROM $table WHERE $column='$newName'"

但是当我在它上面使用或死()时,我得到一个错误,说WHERE username =’someNameHere’附近有不正确的语法.替换列名的正确方法是什么,假设这是错的?

编辑:代码就是这个.值应该是正确的,因为我没有看到错误中的任何错误.

$sql = "SELECT $column FROM $table WHERE $column='$newName'";
$result = MysqL_query($sql) or die( MysqL_error());

解决方法

像这样进行查询

$sql = "SELECT ".$column." FROM ".$table." WHERE ".$column."='".$newName."'"

BTW这是sqlinjection易受攻击的代码.您应该在查询中使用它们之前检查变量.你也应该开始使用mysqli和prepared statements

今天关于在mysql查询中传递java字符串变量java mysql查询语句的讲解已经结束,谢谢您的阅读,如果想了解更多关于android – 如何在sql查询中传递逗号分隔的字符串值?、c#-如何在查询字符串中传递json?、php – 在mysql查询中使用IF条件、php – 在mysql查询中使用变量作为列名的相关知识,请在本站搜索。

本文标签: