以上就是给各位分享在mysql查询中传递java字符串变量,其中也会对javamysql查询语句进行解释,同时本文还将给你拓展android–如何在sql查询中传递逗号分隔的字符串值?、c#-如何在查
以上就是给各位分享在mysql查询中传递java字符串变量,其中也会对java mysql查询语句进行解释,同时本文还将给你拓展android – 如何在sql查询中传递逗号分隔的字符串值?、c#-如何在查询字符串中传递json?、php – 在mysql查询中使用IF条件、php – 在mysql查询中使用变量作为列名等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- 在mysql查询中传递java字符串变量(java mysql查询语句)
- android – 如何在sql查询中传递逗号分隔的字符串值?
- c#-如何在查询字符串中传递json?
- php – 在mysql查询中使用IF条件
- php – 在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查询中传递逗号分隔的字符串值?
在这个我创建简单的数据库并使用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?
我试图通过使用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条件
嗨,我正在尝试加入表,取决于另一个表的值.在我的场景中,我希望在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查询中使用变量作为列名
"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查询中使用变量作为列名的相关知识,请在本站搜索。
本文标签: