JSTL sql tags with jndi datasource
Im trying to use JSTL sql tags but get "no suitable driver" when trying to connect
to a jndi datasource. the jakarta dbtags works fine but jstl does not
I figured it out but I'll leave it up to BEA to tell everyone how to doit.
"Fred Forester" <[email protected]> wrote:
>
>
>Im trying to use JSTL sql tags but get "no suitable driver" when trying
>to connect
>to a jndi datasource. the jakarta dbtags works fine but jstl does not
Similar Messages
-
Combing jstl/xml tags with jsf - can't pass parameter
I'm using the jstl/xml tags to parse portions of an xml document. For some value of an attribute I want to render a search link, many of these links may be rendered on a page and I need to track which one has actually been selected using the id of the generating xml element.
This is what I've tried, both using h:commandLink and a f:param and t:commandLink (tomahawk) and a t:updateActionListener.
It doesn't seem to be possible to expose the resolved value of the xpath ="@id" in any way that either the tomahawk or core jsf tags can see.
<x:when select="$control[@type='SEARCH']">
<input type="text" id='<x:out select="@id"/>' disabled="true">
<x:set var="selectedId" select="@id"/>
<h:commandLink action="#{pack.search}" value="#{msg['actionPack.label.search']}" styleClass="linkNoUnderline">
<f:param value="${selectedID}" name="selectedID"/>
</h:commandLink>
<%--<t:commandLink action="#{pack.search}" value="#{msg['actionPack.label.search']}" styleClass="linkNoUnderline">
<t:updateActionListener property="#{pack.searchingId}" value="${searchId}"/>
</t:commandLink>--%>
</x:when>The JSF and JSTL tags don't really play well together.
Particularly conditional and looping tags.
My suggestion would be - if you're using JSF, don't use JSTL.
You are right in that the JSF tags don't bother with the xpath expression.
Would it be possible to shift the xml logic into an action/bean somewhere, and just present the jsp page with a list of relevant objects?
If I understand you are trying to determine which link was clicked on a page? In the JSF action "pack.search"?
What method of iterating are you using? an x:forEachLoop? A datatable? -
High invalidations in v$sqlarea for 1 query tag with "SQL Analyze"
Hi All,
Hopefully post to the right forum, if not please do let me know. Thanks
I have one pre-production issue still don't have any clue how to move forward.
This is 2 RAC nodes in linux platform with Oracle 11.2.0.2
In the begininng this environment having a lot of performance issue, as huge "cursor: pin S wait on X", "latch: shared pool"
and "library cache:Mutex X" causing very bad performance in this environment. After oracle support suggest to disable few hidden paramter
and adjust some parameter, then it help to stablized the environment (according to oracle, the initial issue was caused by high version count).
But we still can find minimal "latch:shared pool" and "library cache:Mutex X" on top 5 wait event list on hourly AWR report.
This time oracle was saying it might caused by high reload and high invalidatiosn in sqlarea (not sure how true it is), luckily the event
did not caused the performance issue at this moment, but we're asking support how can we get rid of the "mutex/latch" event.
They give me one query to check the invalidations in v$sqlarea, and they suspect the high validation is causing by application.
select *
from v$sqlarea
order by invalidations DESC;
Weird thing is, there have one SQL tag with "SQL Analyze" always causing high invalidations. But we're not able to get more detail (base on SQL_ID)
in v$sql or v$session table. This SQL insert into v$sqlarea and remove within 1 or 2 seconds, hard to get more information.
And the statement is exactly the same, but don't know why SQL Analyze always checking on it.
This SQL is triggering by SYS user, and it is inserting into MLOG$ table (one of the application materialized log file)
insert into "test"."MLOG$_test1" select * from "test"."MLOG$_test1"
The v$sqlarea information as below, sometime the invalidations can hit more than 10,000
SQL_ID SQL_TEXT LOADS INVALIDATIONS
0m6dhq90rg82x /* SQL Analyze(632,0) */ insert into "test"."MLOG$_test" select * from "test"."MLOG$_test 7981 7981
{code}
Anyone have any idea how can i move forward for this issue? As Oracle is asking me to use SQLTXPLAIN get the detail?
Please share with me if you have any idea. Thanks in advance.
Regards,
KlngHi Dom,
We have checked there have no SQL Tuning enable for this SQL_ID. Below is the optimizer parameter in this environment, the hidden parameter was changed which suggest by oracle support.
NAME TYPE VALUE
_optimizer_adaptive_cursor_sharing boolean FALSE
_optimizer_extended_cursor_sharing_r string NONE
el
object_cache_optimal_size integer 102400
optimizer_capture_sql_plan_baselines boolean FALSE
optimizer_dynamic_sampling integer 2
optimizer_features_enable string 11.2.0.2
optimizer_index_caching integer 90
optimizer_index_cost_adj integer 10
optimizer_mode string ALL_ROWS
optimizer_secure_view_merging boolean TRUE
optimizer_use_invisible_indexes boolean FALSE
optimizer_use_pending_statistics boolean FALSE
optimizer_use_sql_plan_baselines boolean TRUE
plsql_optimize_level integer 2
SQL> select * from dba_sql_plan_baselines;
no rows selected
SQL>yeah we did run the ash, but the high invalidation did not caputre in the report. Actually this SQL tag with sql analyze it gone from v$sqlarea very fast (only 1 or 2 seconds only).
Thanks.
Regards,
Klng -
How to use sql tag of jstl for inserting data
hello
I want to insert the data in to oracle through jsp using standard sql tags of jstl please help me1) Go to www.google.com.
2) Enter in that input field "jstl sql tag tutorial" (assuming you want to learn the JSTL SQL tag library).
3) Hit that search button.
4) Explore the results. One of them is http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSTL7.html -
JSTL - SQL Server Database Connectivity problem
Hi All
I am trying to implement DB connection using JSTL sql tag using the following code :-
<c:set value="jdbc:sqlserver://localhost;databaseName=Studentreg;user=sa;password=pass" var="URL"/>
<sql:setDataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="${URL}" user="sa" password="pass" var="stc"/>
But I am getting the error :-
exception
javax.servlet.ServletException: javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver"
root cause
javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver"
But when I am trying to implement the same using the jdbc-odbc driver It work fine. This is the code:-
<sql:setDataSource driver="sun.jdbc.odbc.JdbcOdbcDriver" url="jdbc:odbc:dsn_name" user="sa" password="pass" var="stc"/>
Please help me in this regards
Thanks in Advance
Sulfikkarjava.sql.SQLException: No suitable driverMeans that it can not find the JDBC driver in the classpath.
Make sure your Database driver is in your WEB-INF/lib directory, or [TOMCAT]/common/lib directory (or equivalent)
Cheers,
evnafets -
I have a small web app that makes needs to make about 12 SQL queries in a JSP and am trying to figure out what is the best way to do this
I had initially coded this using plain JAVA code in the JSP as follows :-
<%
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
st = conn.createStatement();
rs = st.executeQuery("select .........");
%>
But then I came across the SQL Tag Library in an article and wonder if this is more efficient code?
If so does anyone have a pointer to a good intro to these tags as they look complicated (I only am doing queries on the SQL database, no inserts or updates)Sometimes you've gotta do what you've gotta do.
My rule is "no scriptlets".
If you MUST access a database from a JSP, the only right way to do it is to use JSTL <sql> tags.
% -
Could someone help me with sql tags?
Good morning here in Brazil, rsrs!!
Well, I can�t see why it is giving me this exception, the codes are below
could you give me some explanation? Thanks!
my conection class and getDetalhes method:
package teste;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
public class Data {
PreparedStatement prepStmt;
ResultSet rs;
Connection con;
Detalhes detalhes;
int codigo;
ArrayList list;
public Data()throws Exception {
try {
Class.forName("org.gjt.mm.mysql.Driver");
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/loja?user=marcos&password=131283");
} catch (Exception ex) {
throw new Exception(" Database not found!!" +
ex.getMessage());
public void remove() {
try {
con.close();
} catch (SQLException ex) {
System.out.println(ex.getMessage());
public void setCodigo(int codigo){
this.codigo = codigo;
public Detalhes getDetalhes(){
try {
String selectStatement = "select * from livraria where codigo ?";
prepStmt = con.prepareStatement(selectStatement);
prepStmt.setInt(1, codigo);
rs = prepStmt.executeQuery();
while(rs.next())
detalhes = new Detalhes(rs.getString("titulo"), rs.getString("autor"), rs.getDouble("preco"), rs.getInt("codigo"));
prepStmt.close();
}catch(Exception e){
System.out.println(e.getMessage());
}finally {
// close prepared statements and result sets within finally blocks
if (rs != null) {
try {
rs.close();
} catch (SQLException sqle) {
System.out.println(sqle.getMessage());
if (prepStmt != null) {
try {
prepStmt.close();
} catch (SQLException sqle) {
System.out.println(sqle.getMessage());
return detalhes;
public ArrayList getList(){
try {
list = new ArrayList();
String selectStatement = "select * from livraria";
PreparedStatement prepStmt = con.prepareStatement(selectStatement);
ResultSet rs = prepStmt.executeQuery();
while(rs.next()){
detalhes = new Detalhes(rs.getString(1), rs.getString(2), rs.getDouble(3), rs.getInt(4));
list.add(detalhes);
prepStmt.close();
}catch(Exception e){
System.out.println(e.getMessage());
return list;
}my inicial Context class
package teste;
import java.util.ArrayList;
import javax.servlet.*;
public final class ContextPage implements ServletContextListener {
private ServletContext context = null;
Data bookDB;
public void contextInitialized(ServletContextEvent event) {
context = event.getServletContext();
try {
bookDB = new Data();
context.setAttribute("bookDB", bookDB);
} catch (Exception ex) {
System.out.println("Couldn't create bookstore database bean: " +
ex.getMessage());
public void contextDestroyed(ServletContextEvent event) {
/* context = event.getServletContext();
Data dados = (Data) context.getAttribute("bookDB");
if (dados != null) {
dados.remove();
context.removeAttribute("bookDB");
} my jsp page
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<p><b><h1>Resultado:</h1></b></p><br>
<sql:setDataSource dataSource="teste.Data"/>
<sql:query var="books" sql="select * from livraria">
</sql:query>
<c:forEach var="book" begin="0" items="${books.rows}">
${book.titulo}
</c:forEach>and the excption it brings me:
exception
javax.servlet.ServletException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver"
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:830)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:763)
org.apache.jsp.Resposta_jsp._jspService(Resposta_jsp.java:86)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:105)
javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:336)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:251)
javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:249)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:282)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:165)
root cause
javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver"
org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnection(QueryTagSupport.java:276)
org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(QueryTagSupport.java:159)
org.apache.jsp.Resposta_jsp._jspx_meth_sql_query_0(Resposta_jsp.java:121)
org.apache.jsp.Resposta_jsp._jspService(Resposta_jsp.java:69)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:105)
javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:336)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:251)
javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:249)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:282)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:165)I take that back. The problem is that you are trying to use something as a DataSource that is NOT a DataSource.
The docs for the sql:setDataSource tag says:
"Data source. If specified as a string, it can either be a relative path to a JNDI resource, or a JDBC parameters string as defined in Section 10.1.1."
You are setting it as if it were requiring a JavaBean, which is not the case.
You want to either use a JavaBean to do all the SQL (good thing) or the sql tags (not a good thing).
If I were using your teste.Data bean, my JSTL would look like this:
<jsp:useBean id="data" class="teste.Data"/>
<c:set var="bookList" value="${data.list}" />
<c:forEach var="book" items="${bookList}">
${book.titulo}<br />
</c:forEach>If I were to use the sql tags (don't) then they would look like:
<sql:setDataSource driver="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://127.0.0.1/loja"
user="marcos" password="131283" />
<sql:query var="bookResults" sql="select * from livraria"/>
<c:set var="bookResultArray" value="${bookResults.rows}"/>
<c:forEach var="bookRow" items="${bookResultArray}">
${bookRow.titulo}<br />
</c:forEach>Note that the values coming out of the sql query tag are rows in the database, not your Detahles class. So you have to access the values via the names of your columns in the database, not by the properties (get methods) in your class. -
Help on JSTL sql:query / tag
Hi.....
Currently i am trying to query a date from MSSQL using <sql> tag. I had tested in MSSQL on this SQL statement which is:-
SELECT * FROM hr_leave WHERE startDate LIKE 'Apr 20 2006%'
It can query my MSSQL datetime.
Then , I apply this query inside my JSP/JSTL page which is :-
<%@ include file="/common/header.jsp" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
<jsp:useBean id="now" class="java.text.SimpleDateFormat"/> <!-- get current date -->
<c:set var="userid" value="${sessionScope.currentUser.id}"/> <!-- get current user id -->
<c:set var="dates"><fmt:formatDate value="${now}" type="DATE" pattern="MMM dd yyyy"/></c:set>
<sql:setDataSource var="ds" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://192.168.250.86:1223;DatabaseName=eleavedb;SelectMethod=cursor" user="sa" password="sapassword"/>
<sql:query var="countLeave" dataSource="${ds}">
SELECT * FROM hr_leave_entry WHERE startDate LIKE (?, '%')
<sql:param value="${dates}"/>
</sql:query>
From the code above it displayed an an error for me. I am worried whether my select statement and my way of using the '%' symbol is it not correct.
Can anyone guide me? Thank You!And the error was?
No, that sql does not look valid the way that you have written it.
Parameters are NOT copied/pasted into sql strings. They replace the value directly. So the correct sql would be
SELECT * FROM hr_leave_entry WHERE startDate LIKE ?
You would need to actually pass the parameter as 'Apr 20 2006%' -
CF8 with JBoss JNDI datasource
After installing and configuring a CF8 for J2EE running on
JBoss 4.2.2.GA with Java 6, I have created a JNDI datasource for
Oracle 10g in the oracle-ds.xml file. I have configured a CF8
datasource that uses the JNDI resource.
Any query that is NOT using cfqueryparam works quite well.
As soon as cfqueryparam is used, I get an "Error casting an
object of type org.jboss.resource.adapter.jdbc.WrappedConnection
cannot be cast to coldfusion.server.j2ee.sql.JRunConnectionHandle
to an incompatible type.".
The configuration and the exception is pretty much the same
as described in
Problem
description.
This is clearly a CF8 bug and I was wondering if there is any
known workaround for it.In web.xml making the following entry:
<web-app>
<description>MySQL Test App</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
Next, add a file jboss-web.xml under WEB-INF/ folder of the web-application. This file should contain entry as:
<jboss-web>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<jndi-name>java:/jdbc/test</jndi-name>
<res-auth>Container</res-auth>
</resource-ref>
</jboss-web>
Next, in JBOSS_HOME/server/default/deploy folder make a xx-ds.xml file or else, a similiar file can be found in that same folder with the name hsqldb-ds.xml. Make following entries in that xml file:
<datasources>
<local-tx-datasource>
<jndi-name>/jdbc/test</jndi-name>
<type-mapping>MySQL</type-mapping>
<connection-url>jdbc:mysql://localhost:3306/shopping_cart</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root123</password>
<min-pool-size>1</min-pool-size>
<max-pool-size>5</max-pool-size>
</local-tx-datasource>
This should bind the jndi name.
In our client application, we need to look up as:
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:/jdbc/test");
Connection conn = ds.getConnection();
This works perfectly. -
Post Author: nl11087
CA Forum: JAVA
A single quote/apostrophe in string parameter passed to a Crystal Report with Command datasource connecting to a SQL Server database, using sqljdbc driver does not escape the special character correctly. When doing a preview in the Crystal Reports IDE it allows you to escape the input parameter as expected and work correctly, but through the JRC component it fails. For string parameters without special sql server characters I experience no problems at all. When replacing the Command with a direct table there is also no problem.
Reproduction:
1. create a database db1, create a table table1 with a String type column col1.
2. Create new report Report1.rpt, create a connection to above, Add Command using 'SELECT col1, col2, col3 FROM table1 WHERE col1 = '{?Par1}' . Add a parameter field Par1 : String
3. In your java stand alone application using JRC add the parameter Par1 with a value "Jon Doe's Value" containing a single apostrophe. Export to PDF. (I also tried MSWord and this failed too, similar behavior). Additionally, in another test try to replaceAll("'","''") to escape it, preventing the code to break, but now it does not retrieve the expected row anymore and you end up with an empty report.
Exception StackTrace:
com.crystaldecisions.reports.exportinterface.exceptions.ExportException: JDBC Error: Incorrect syntax near 's'.
at com.crystaldecisions.reports.formatter.a.c.if(Unknown Source)
at com.crystaldecisions.reports.formatter.a.c.a(Unknown Source)
at com.businessobjects.reports.sdk.b.b.int(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.x.a(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.q.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.dd.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
at com.crystaldecisions.reports.sdk.PrintOutputController.export(Unknown Source)
Caused by: com.crystaldecisions.reports.formatter.formatter.c: JDBC Error: Incorrect syntax near 's'.
at com.crystaldecisions.reports.formatter.formatter.objectformatter.bv.<init>(Unknown Source)
at com.crystaldecisions.reports.formatter.formatter.objectformatter.bv.if(Unknown Source)
at com.crystaldecisions.reports.formatter.formatter.e.l.<init>(Unknown Source)
at com.crystaldecisions.reports.formatter.formatter.e.p.<init>(Unknown Source)
at com.crystaldecisions.reports.formatter.formatter.e.p.a(Unknown Source)
at com.crystaldecisions.reports.formatter.a.c.a(Unknown Source)
... 17 more
Caused by: com.crystaldecisions.reports.dataengine.be: JDBC Error: Incorrect syntax near 's'.
at com.crystaldecisions.reports.dataengine.n.else(Unknown Source)
at com.crystaldecisions.reports.dataengine.n.nr(Unknown Source)
at com.crystaldecisions.reports.dataengine.n.bn(Unknown Source)
at com.crystaldecisions.reports.dataengine.n.bp(Unknown Source)
at com.crystaldecisions.reports.dataengine.n.else(Unknown Source)
at com.crystaldecisions.reports.dataengine.s.a(Unknown Source)
at com.crystaldecisions.reports.dataengine.bk.a(Unknown Source)
at com.crystaldecisions.reports.dataengine.bk.aa(Unknown Source)
at com.crystaldecisions.reports.dataengine.bk.<init>(Unknown Source)
at com.crystaldecisions.reports.dataengine.bk.<init>(Unknown Source)
at com.crystaldecisions.reports.dataengine.bk.<init>(Unknown Source)
at com.crystaldecisions.reports.dataengine.bk.a(Unknown Source)
... 23 more
Caused by: com.crystaldecisions.reports.reportdefinition.datainterface.n: JDBC Error: Incorrect syntax near 's'.
at com.crystaldecisions.reports.reportdefinition.datainterface.p.a(Unknown Source)
... 35 more
Caused by: com.crystaldecisions.reports.queryengine.driverImpl.m: JDBC Error: Incorrect syntax near 's'.
at com.crystaldecisions.reports.queryengine.driverImpl.o.eC(Unknown Source)
at com.crystaldecisions.reports.queryengine.driverImpl.o.if(Unknown Source)
at com.crystaldecisions.reports.queryengine.ap.ea(Unknown Source)
at com.crystaldecisions.reports.queryengine.ap.h(Unknown Source)
at com.crystaldecisions.reports.queryengine.ap.dV(Unknown Source)
at com.crystaldecisions.reports.queryengine.ax.if(Unknown Source)
at com.crystaldecisions.reports.queryengine.bc.if(Unknown Source)
at com.crystaldecisions.reports.queryengine.bc.do(Unknown Source)
at com.crystaldecisions.reports.queryengine.bc.do(Unknown Source)
at com.crystaldecisions.reports.queryengine.ae.cy(Unknown Source)
at com.crystaldecisions.reports.queryengine.ae.cz(Unknown Source)
at com.crystaldecisions.reports.queryengine.b1.bc(Unknown Source)
... 36 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 's'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
at com.microsoft.sqlserver.jdbc.IOBuffer.processPackets(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StatementExecutionRequest.executeStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.execute(Unknown Source)
... 48 more
- JRCAgent3 detected an exception: An error occured while exporting the report
at com.businessobjects.reports.sdk.b.b.int(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.x.a(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.q.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.dd.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
at com.crystaldecisions.reports.sdk.PrintOutputController.export(Unknown Source)Post Author: nl11087
CA Forum: JAVA
A single quote/apostrophe in string parameter passed to a Crystal Report with Command datasource connecting to a SQL Server database, using sqljdbc driver does not escape the special character correctly. When doing a preview in the Crystal Reports IDE it allows you to escape the input parameter as expected and work correctly, but through the JRC component it fails. For string parameters without special sql server characters I experience no problems at all. When replacing the Command with a direct table there is also no problem.
Reproduction:
1. create a database db1, create a table table1 with a String type column col1.
2. Create new report Report1.rpt, create a connection to above, Add Command using 'SELECT col1, col2, col3 FROM table1 WHERE col1 = '{?Par1}' . Add a parameter field Par1 : String
3. In your java stand alone application using JRC add the parameter Par1 with a value "Jon Doe's Value" containing a single apostrophe. Export to PDF. (I also tried MSWord and this failed too, similar behavior). Additionally, in another test try to replaceAll("'","''") to escape it, preventing the code to break, but now it does not retrieve the expected row anymore and you end up with an empty report.
Exception StackTrace:
com.crystaldecisions.reports.exportinterface.exceptions.ExportException: JDBC Error: Incorrect syntax near 's'.
at com.crystaldecisions.reports.formatter.a.c.if(Unknown Source)
at com.crystaldecisions.reports.formatter.a.c.a(Unknown Source)
at com.businessobjects.reports.sdk.b.b.int(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.x.a(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.q.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.dd.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
at com.crystaldecisions.reports.sdk.PrintOutputController.export(Unknown Source)
Caused by: com.crystaldecisions.reports.formatter.formatter.c: JDBC Error: Incorrect syntax near 's'.
at com.crystaldecisions.reports.formatter.formatter.objectformatter.bv.<init>(Unknown Source)
at com.crystaldecisions.reports.formatter.formatter.objectformatter.bv.if(Unknown Source)
at com.crystaldecisions.reports.formatter.formatter.e.l.<init>(Unknown Source)
at com.crystaldecisions.reports.formatter.formatter.e.p.<init>(Unknown Source)
at com.crystaldecisions.reports.formatter.formatter.e.p.a(Unknown Source)
at com.crystaldecisions.reports.formatter.a.c.a(Unknown Source)
... 17 more
Caused by: com.crystaldecisions.reports.dataengine.be: JDBC Error: Incorrect syntax near 's'.
at com.crystaldecisions.reports.dataengine.n.else(Unknown Source)
at com.crystaldecisions.reports.dataengine.n.nr(Unknown Source)
at com.crystaldecisions.reports.dataengine.n.bn(Unknown Source)
at com.crystaldecisions.reports.dataengine.n.bp(Unknown Source)
at com.crystaldecisions.reports.dataengine.n.else(Unknown Source)
at com.crystaldecisions.reports.dataengine.s.a(Unknown Source)
at com.crystaldecisions.reports.dataengine.bk.a(Unknown Source)
at com.crystaldecisions.reports.dataengine.bk.aa(Unknown Source)
at com.crystaldecisions.reports.dataengine.bk.<init>(Unknown Source)
at com.crystaldecisions.reports.dataengine.bk.<init>(Unknown Source)
at com.crystaldecisions.reports.dataengine.bk.<init>(Unknown Source)
at com.crystaldecisions.reports.dataengine.bk.a(Unknown Source)
... 23 more
Caused by: com.crystaldecisions.reports.reportdefinition.datainterface.n: JDBC Error: Incorrect syntax near 's'.
at com.crystaldecisions.reports.reportdefinition.datainterface.p.a(Unknown Source)
... 35 more
Caused by: com.crystaldecisions.reports.queryengine.driverImpl.m: JDBC Error: Incorrect syntax near 's'.
at com.crystaldecisions.reports.queryengine.driverImpl.o.eC(Unknown Source)
at com.crystaldecisions.reports.queryengine.driverImpl.o.if(Unknown Source)
at com.crystaldecisions.reports.queryengine.ap.ea(Unknown Source)
at com.crystaldecisions.reports.queryengine.ap.h(Unknown Source)
at com.crystaldecisions.reports.queryengine.ap.dV(Unknown Source)
at com.crystaldecisions.reports.queryengine.ax.if(Unknown Source)
at com.crystaldecisions.reports.queryengine.bc.if(Unknown Source)
at com.crystaldecisions.reports.queryengine.bc.do(Unknown Source)
at com.crystaldecisions.reports.queryengine.bc.do(Unknown Source)
at com.crystaldecisions.reports.queryengine.ae.cy(Unknown Source)
at com.crystaldecisions.reports.queryengine.ae.cz(Unknown Source)
at com.crystaldecisions.reports.queryengine.b1.bc(Unknown Source)
... 36 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 's'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
at com.microsoft.sqlserver.jdbc.IOBuffer.processPackets(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StatementExecutionRequest.executeStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.execute(Unknown Source)
... 48 more
- JRCAgent3 detected an exception: An error occured while exporting the report
at com.businessobjects.reports.sdk.b.b.int(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.x.a(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.q.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.dd.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
at com.crystaldecisions.reports.sdk.PrintOutputController.export(Unknown Source) -
How to compare result from sql query with data writen in html input tag?
how to compare result
from sql query with data
writen in html input tag?
I need to compare
user and password in html form
with all user and password in database
how to do this?
or put the resulr from sql query
in array
please help me?Hi dejani
first get the user name and password enter by the user
using
String sUsername=request.getParameter("name of the textfield");
String sPassword=request.getParameter("name of the textfield");
after executeQuery() statement
int exist=0;
while(rs.next())
String sUserId= rs.getString("username");
String sPass_wd= rs.getString("password");
if(sUserId.equals(sUsername) && sPass_wd.equals(sPassword))
exist=1;
if(exist==1)
out.println("user exist");
else
out.println("not exist"); -
Can I use c:out JSTL tag with int values?
I am attempting to c:out an int variable in my JSP using a JSTL core tag. First is it possible to do c:out an int? Second, if it is...can anyone see anything wrong with my code?
This is the error log I am getting:
<Oct 7, 2008 10:20:29 AM MDT> <Error> <HTTP> <BEA-101017> <[ServletContext(id=20
462449,name=rconnect,context-path=/rconnect)] Root cause of ServletException.
javax.servlet.jsp.JspException: ServletException in '/WEB-INF/pages/signup/summa
ry.jsp': An error occurred while evaluating custom action attribute "value" with
value "${orderForm.numOtaModulesSelected}": Unable to find a value for "numOtaM
odulesSelected" in object of class "com.echostar.rconnect.struts.formbeans.Order
FormBean" using operator "." (null)
This is the code:
<c:out value="${orderForm.numOtaModulesSelected}" />where numOtaModulesSelected is defined as a private member variable of the OrderFormBean
I have included the taglib.
Thanks to anyone who can helpYour OrderFormBean class needs to implement a getNumOtaModulesSelected method for that to work. The expression language won't let you get at fields, you need to access it via JavaBeans properties.
-
CF 11: Configuration a datasources to MS SQL Backend with encryption enforced by SQL Server
Hello List;
I have the following problem: Configuration a datasources to MS SQL Backend with option encryption enforced (by SQL Server).
I goggled in the internet for the configuration of the datasource and find multiple articles/advices:
Configuration a datasource type other with jtds.jdbc.Driver and manual configuration of the connection string:
1. Downloading the driver and copy to the cfusion/lib directory: Done, the driver was recognized by coldfusion after a restart of the service.
2. Copying the ntlmauth.dll to the bin directory of jre/bin: Done
3. Configuration of the jdbc URL: jdbc:jtds:sqlserver://xxxx.xxx.xxx.net:1433/db: Works, I don’t get a connection timeout
4. User and PW: Works: I don’T get a login failure.
5. Advanced settings: Connection String: Maybe here is something wrong: EncryptionMethod=SSL; TrustStore=Path\sqlstore.jks; TrustStorePassword=xxx; ValidateServerCertificate=true; HostNameInCertificate=xxx.xxx.xxx.net;
Error Message (Coldfusion logs/stack trace): I/O Error: DB server closed connection. SQLException while attempting to connect: java.sql.SQLException: I/O Error: DB server closed connection..
Has anybody experiences with this topic/can give me advices/send me screenshots.
frankHi Stephen;
we tried: add EncryptionMethod=SSL; ValidateServerCertificate=false; to the connection string;
And it doesn't work.. Are you sure, that you have enabled encryption enforced in your SQL-Server Settings.
Oherwise the connection works, but the Connection is not encrypted:
Coldfusion lies!
You can controll this by veryfining the open connections on the sqlserver with the query:
SELECT net_transport, protocol_type, encrypt_option ,auth_scheme, program_name FROM sys.dm_exec_connections AS c JOIN sys.dm_exec_sessions AS s ON c.session_id = s.session_id cross apply sys.dm_exec_sql_text(most_recent_sql_handle) AS d
There you can see the jtds Connectionand the (programname) and the encryt_option (must be true).
frank -
Please Help With TopLink and JNDI datasource
Hello
I have been trying to figure this out for a while now and I am stuck. I have a simple J2EE project that uses toplink to access 1 table with 2 coulumns (JDev 10.1.3).
I setup a sessions.xml and in there set my data Source Location to be my JNDI datasource.
In my tlMap1 file I am required to put a Deployment Connection and no matter what I do it uses that connection. Is there some way I can make it use the JNDI connection that I specified in sessions.xml instead?
i turned on debugging and it gives the following:
[TopLink Config]: 2006.06.02 10:21:06.140--ServerSession(1216)--Connection(1242)--Thread(Thread[RMICallHandler-0,5,RequestThreadGroup])--connecting(DatabaseLogin(
platform=>Oracle10Platform
user name=> "access_tst_d"
connector=>JNDIConnector datasource name=>jdbc/accessEJB
[TopLink Config]: 2006.06.02 10:21:06.328--ServerSession(1216)--Connection(1244)--Thread(Thread[RMICallHandler-0,5,RequestThreadGroup])--Connected: jdbc:oracle:thin:@access-web-test.admin.uni.edu:1525:WEBT
User: ACCESS_TST_D
Database: Oracle Version: Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - 64bit Production
With the Partitioning and Data Mining options
Driver: Oracle JDBC driver Version: 10.1.0.5.0
[TopLink Info]: 2006.06.02 10:21:06.343--ServerSession(1216)--Thread(Thread[RMICallHandler-0,5,RequestThreadGroup])--default login successful
[TopLink Finer]: 2006.06.02 10:21:06.343--ServerSession(1216)--Thread(Thread[RMICallHandler-0,5,RequestThreadGroup])--client acquired
[TopLink Finest]: 2006.06.02 10:21:06.343--ClientSession(1246)--Thread(Thread[RMICallHandler-0,5,RequestThreadGroup])--Execute query ReadAllQuery(pl.model.PlLoginPrefixes)
[TopLink Fine]: 2006.06.02 10:21:06.375--ServerSession(1216)--Connection(1229)--Thread(Thread[RMICallHandler-0,5,RequestThreadGroup])--SELECT LOGIN_PREFIX_ID, PREFIX FROM PL_LOGIN_PREFIXES
[TopLink Finer]: 2006.06.02 10:21:06.953--ClientSession(1246)--Thread(Thread[RMICallHandler-0,5,RequestThreadGroup])--client released
It looks like it sees the JNDI connection but it uses the "user name" parameter from tlMap1 instead. I am really getting desparate and any help would be greatly appreciated.
Thanks
troySorry to be such a pest about this but I have a bit more info now. If I go in to my tlMap file and select <none selected> for my deployment connection, the compiler gives me warnings and the mapping status report gives an error but it uses the jndi source from session.xml.
Does anyone know of a way to do this (use the jndi datasource) without these compiler warnings? I just have this feeling I am doing something wrong, something that should be simple but nevertheless is turning out to be nearly impossible for me to figure out.
thanks
troy -
how to write sql tags in jstl
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html
Chapter 14
Maybe you are looking for
-
Data Transfer from External to Time Capsule
I have Mid 2012 Retina Display MacBook Pro and I currently have a 2Tb external HD hooked up to it but it makes my laptop less mobile, if i was to buy an airport or time capsule can i transfer everything thats on my current external HD to that and how
-
Spry dropdown menubar works in everything but IE
I'm having a problem with a site I just launched. The site: www.gmiloans.com/commercial When viewed in IE, the buttons that have a menu overlap with the buttons directly to the left. I've researched left and right but for the life of me, I can't figu
-
No Video Icon even though MacBook
I have a MacBook Pro. My dad has a MacBook. I got him set up in AIM through iChat and today he signed on. His icon only displays a audio chat connection. The audio connection works fine; however, he has a camera and we would like to video chat. He is
-
I do not have permission to move TimeMachine backup?
I've been having this issue for some time now. I have several small external storage drives that I would like to re-sort and move some of the backups from TimeMachine onto a new cloud based external drive. I want to do this for two computers I have r
-
ILM to FIM 2010 Migration.
Hello All, We are planning to upgrade ILM 2007 to FIM 2010 and plan is to use existing ILM database. --Restore it to the new DB server with the name "FIMSynchronizationService", --Install FIM Sync, telling it to use the restored DB, and providing the