2011-12-27 4 views
0

ウェブプログラミングを初めて使用しています。私はデータベースとjdbを使ってデータベースに接続しようとしています。私はすでにこのためのJavaコードを書いています。今私はTomcatサーバー上で実行する必要があります。だから私はJSPをこのjob.Butを行うには、ここでは許されない空のタイプとerorを示しています。 jspを使ってこのコードを実行する方法。私の間違いは何ですか?私はこれで解決するのを助けてください。 今、これは私のコードJSPを使用して複数の機能を実行

<%@page import="java.sql.*"%> 
<%@page import="java.util.*" %> 
<%@page import="java.util.logging.Level"%> 
<%@page import="java.util.logging.Logger"%> 

<%! 
int i=0,j=0,k=0; 
Connection conn=null; 
Connection connection=null; 
static int count=0; 

    String Cname[]=null; 
    String Title[]=null; 
    Statement stmt1=null; 
    ResultSet NumOfRows=null; 
    Statement stmt2=null; 
    ResultSet SpreadsheetValues=null; 
    Statement stmt3=null; 
    ResultSet rs3=null; 
    int RowCount; 
     //this static function required to connect excel database 
    static 
    { 
    try { 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    System.out.println("Exception in connecting to DB"+e.getMessage()); 
    } 
    } 

    // connect Sql database 
    void ConnectSqlDB() { 
    try{ 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    Connection con = DriverManager.getConnection("jdbc:odbc:ServerDB","sa","sqladmin"); 
    System.out.println("MSSQL connected " +"<br>"); 
    }catch(Exception e){ 
    e.printStackTrace(); 
    System.out.println("Exception in connecting to DB"+e.getMessage()); 
    } 
    } 
    void ConnectExcelDB() throws SQLException{ 
    conn=DriverManager.getConnection("jdbc:odbc:spreadsheetdb","",""); 
} 
    void getRowcount() throws SQLException{ 
    stmt1=conn.createStatement(); 

    String Qs1="select count(*) from [Sheet1$]"; 
    NumOfRows=stmt1.executeQuery(Qs1); 
    while(NumOfRows.next()){ 
    Rowcount=NumOfRows.getInt(1); 
    } 
    NumOfRows.close(); 
    } 
    void getExcelValues() throws SQLException{ 
     stmt2=conn.createStatement(); 
     String Qs2="select * from [Sheet1$]"; 
     SpreadsheetValues=stmt2.executeQuery(Qs2); 

     Cname=new String[Rowcount]; 
     Title=new String[Rowcount]; 
     while(SpreadsheetValues.next()){ 

    // Assigning Spread sheet values to String array 

       Cname[j]=SpreadsheetValues.getString("Cname"); 
       Title[j]=SpreadsheetValues.getString("Title"); 
       j++; 
     } 
    } 
      SpreadsheetValues.close(); 
      stmt2.close(); 
      conn.close(); 
      SpreadsheetValues=null; 
      stmt2=null; 
      conn=null; 
} 
    %> 
     <%=ConnectSqlDB()%> 
     <%=ConnectExcelDB()%> 
     <%=getRowcount()%> 
     <%=getExcelValues()%> 
+0

[Sheet1 $]から選択カウント(*) ";"有効なSQLクエリですか?私はそこにバインド変数を使用する必要があると思います。 – Jayan

答えて

0

空のメソッドを呼び出すために<%= %>(式)を使用しないでください、あなたは(SO threadを読む)JSPでJavaコードを避けることが必要です。

<% 
    ConnectSqlDB(); 
    ConnectExcelDB(); 
    getRowcount(); 
    getExcelValues(); 
%> 

<p>Total Records : <%=RowCount%> 
<p>Array element at 0 index <%=name[0]%> 

<% 
for(String v:name) 
{ 
    out.println("<br/>" + v); 
} 
%> 
+0

空白のページを取得しています – user1074824

+0

@ user1074824 - 式<%= var_or_expression%> – adatapost

+0

を使用して変数から値を書き込むことができます。 [名前]の値を[j]に代入したとします。これはどのように印刷するのですか? – user1074824

1

JSP式でメソッドを使用する場合、メソッドは値を返す必要があります。あなたのメソッドのすべてが戻り値の型がvoid、つまり何も返されていないのがわかります。適切な値を返すようにメソッドを変更します。

NOTE

は、私はあなたが現在のJSPなどを学んでいることを理解しますが、ビュー技術にcontorl /アプリケーションロジックを書くことはJSPが悪い習慣であるようにということを覚えておいてください。 MVC patternをお試しください。

関連する問題