JAVA面接試験問題集——JDBC、XML編


Jdbc、Jdo方面1、Jdbc連Oracleのプログラムを書かせるかもしれません。そしてデータの照会を実現します。
package hello.ant; 
import java.sql.*; 
public class jdbc 
{ 
String dbUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl"; 
String theUser="admin"; 
String thePw="manager"; 
Connection c=null; 
Statement conn; 
ResultSet rs=null; 
public jdbc() 
{ 
try{ 
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 
c = DriverManager.getConnection(dbUrl,theUser,thePw); 
conn=c.createStatement(); 
}catch(Exception e){ 
e.printStackTrace(); 
} 
} 
public boolean executeUpdate(String sql) 
{ 
try 
{ 
conn.executeUpdate(sql); 
return true; 
} 
catch (SQLException e) 
{ 
e.printStackTrace(); 
return false; 
} 
} 
public ResultSet executeQuery(String sql) 
{ 
rs=null; 
try 
{ 
rs=conn.executeQuery(sql); 
} 
catch (SQLException e) 
{ 
e.printStackTrace(); 
} 
return rs; 
} 
public void close() 
{ 
try 
{ 
conn.close(); 
c.close(); 
} 
catch (Exception e) 
{ 
e.printStackTrace(); 
} 
} 
public static void main(String[] args) 
{ 
ResultSet rs; 
jdbc conn = new jdbc(); 
rs=conn.executeQuery("select * from test"); 
try{ 
while (rs.next()) 
{ 
System.out.println(rs.getString("id")); 
System.out.println(rs.getString("name")); 
} 
}catch(Exception e) 
{ 
e.printStackTrace(); 
} 
} 
} 
 
 
2、Class.forNameの役割?なぜ使いますかこのアクセスを呼び出してクラス名を文字列で指定するクラスのオブジェクトを返します。3、Jdoとは何ですかJDOはJavaオブジェクトの持続化に関する新たな仕様であり、Java data objectの略称であり、ある種のデータ倉庫にアクセスするためのオブジェクトの標準化されたAPIでもある。JDOは透明なオブジェクト記憶を提供しているので、開発者にとっては、JDBC APIのような追加のコードは全く必要ない。これらの煩雑な定例的な仕事はすでにJDOプロバイダーに移転して、開発者を解脱させて、それによって時間と精力が業務の論理の上で集中します。また、JDOは任意のデータの下で動作できるので、柔軟です。JDBCは単に関係データベース(RDBMS)JDOに向けてより一般的であり、関係データベース、ファイル、XMLおよび対象データベース(ODBMS)など、どのデータの下の記憶機能にも提供されており、アプリケーションのグラフト性が強い。4、ORACLEの大データ量における改ページ解決方法。一般的にIDを切り取る方法として、三層ネスト方法があります。答え:一種類の改ページ方法
 
 
<% 
int i=1; 
int numPages=14; 
String pages = request.getParameter("page") ; 
int currentPage = 1; 
currentPage=(pages==null)?(1):{Integer.parseInt(pages)} 
sql = "select count(*) from tables"; 
ResultSet rs = DBLink.executeQuery(sql) ; 
while(rs.next()) i = rs.getInt(1) ; 
int intPageCount=1; 
intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1); 
int nextPage ; 
int upPage; 
nextPage = currentPage+1; 
if (nextPage>=intPageCount) nextPage=intPageCount; 
upPage = currentPage-1; 
if (upPage<=1) upPage=1; 
rs.close(); 
sql="select * from tables"; 
rs=DBLink.executeQuery(sql); 
i=0; 
while((i<numPages*(currentPage-1))&&rs.next()){i++;} 
%> 
//     
//       
  :<%=currentPage%>/<%=intPageCount%><a href="List.jsp?page=1">   </a><a 
 
href="List.jsp?page=<%=upPage%>">   </a> 
<% 
for(int j=1;j<=intPageCount;j++){ 
if(currentPage!=j){ 
%> 
<a href="list.jsp?page=<%=j%>">[<%=j%>]</a> 
<% 
}else{ 
out.println(j); 
} 
} 
%> 
<a href="List.jsp?page=<%=nextPage%>">   </a><a href="List.jsp?page=<%=intPageCount%>">    
 
</a> 
 
 
Xmlの方面の1、xmlはどれらの解析の技術がありますか?違いは何ですか答:DOM、SAX、STAXなどDOMがあります。大型ファイルを扱うと、性能が落ちます。この問題はDOMのツリー構造によって引き起こされたもので、このような構造の占用メモリは多く、またDOMは解析ファイルの前にドキュメント全体をメモリに入れなければならず、XMLに対するランダムアクセスに適したSAX:DOMではなく、SAXはイベント駆動型のXML解析方式である。XMLファイルを順次読み込むので、一回で全部ファイルを読み込む必要はありません。ファイルの先頭のように、ドキュメントが終了したり、ラベルの先頭とラベルが終了したりすると、ユーザーはそのコールバックイベントに処理コードを書き込むことでXMLファイルを処理し、XMLの順番にSTAXにアクセスするのに適しています。どうやって実現しますかデータの保存、情報の構成の両方を使用しました。データ交換プラットフォームを作る時、データソースができないデータをXMLファイルにまとめ、XMLファイルを圧縮して暗号化した後、ネットワークを通じて受信者に転送し、復号と解凍を受けてからXMLファイルに関連情報を復元して処理します。ソフトウェアの配置をする時、XMLを利用してとても便利に行うことができて、ソフトウェアの各種の配置のパラメーターはすべてXMLファイルの中で貯蓄します。3、jdomでxmlファイルを解析する時、中国語の問題はどう解決しますか?どのように解析しますか下記のコードを見て、コード方式で解決します。
package test; 
import java.io.*; 
public class DOMTest 
{ 
private String inFile = "c:\people.xml"; 
private String outFile = "c:\people.xml"; 
public static void main(String args[]) 
{ 
new DOMTest(); 
} 
public DOMTest() 
{ 
try 
{ 
javax.xml.parsers.DocumentBuilder builder = 
javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
org.w3c.dom.Document doc = builder.newDocument(); 
org.w3c.dom.Element root = doc.createElement("  "); 
org.w3c.dom.Element wang = doc.createElement(" "); 
org.w3c.dom.Element liu = doc.createElement(" "); 
wang.appendChild(doc.createTextNode("     ")); 
root.appendChild(wang); 
doc.appendChild(root); 
javax.xml.transform.Transformer transformer = 
javax.xml.transform.TransformerFactory.newInstance().newTransformer(); 
transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "gb2312"); 
transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes"); 
 
 
transformer.transform(new javax.xml.transform.dom.DOMSource(doc), 
new 
 
javax.xml.transform.stream.StreamResult(outFile)); 
} 
catch (Exception e) 
{ 
System.out.println (e.getMessage()); 
} 
} 
} 
 
 
4、プログラミングはJAVAでXMLを解析する方式です。答え:SAX方式でXMLを解析します。XMLファイルは以下の通りです。xml version=「1.0」encoding=「gb 2312」?person>王小明情報学院6258113男、1955年生まれ、博士、95年海南大学事件のレプリカ種類SAXHandler.javaに転入します。
import java.io.*; 
import java.util.Hashtable; 
import org.xml.sax.*; 
public class SAXHandler extends HandlerBase 
{ 
private Hashtable table = new Hashtable(); 
private String currentElement = null; 
private String currentValue = null; 
public void setTable(Hashtable table) 
{ 
this.table = table; 
} 
public Hashtable getTable() 
{ 
return table; 
} 
public void startElement(String tag, AttributeList attrs) 
throws SAXException 
{ 
currentElement = tag; 
} 
public void characters(char[] ch, int start, int length) 
throws SAXException 
{ 
currentValue = new String(ch, start, length); 
} 
public void endElement(String name) throws SAXException 
{ 
if (currentElement.equals(name)) 
table.put(currentElement, currentValue); 
} 
} 
 
 
JSPの内容はソースコードを表示します。SaxXml.jsp:
<HTML> 
<HEAD> 
<TITLE>  XML  people.xml</TITLE> 
</HEAD> 
<BODY> 
<%@ page errorPage="ErrPage.jsp" 
contentType="text/html;charset=GB2312" %> 
<%@ page import="java.io.*" %> 
<%@ page import="java.util.Hashtable" %> 
<%@ page import="org.w3c.dom.*" %> 
<%@ page import="org.xml.sax.*" %> 
<%@ page import="javax.xml.parsers.SAXParserFactory" %> 
<%@ page import="javax.xml.parsers.SAXParser" %> 
<%@ page import="SAXHandler" %> 
<% 
File file = new File("c:\people.xml"); 
FileReader reader = new FileReader(file); 
Parser parser; 
SAXParserFactory spf = SAXParserFactory.newInstance(); 
SAXParser sp = spf.newSAXParser(); 
SAXHandler handler = new SAXHandler(); 
sp.parse(new InputSource(reader), handler); 
Hashtable hashTable = handler.getTable(); 
out.println("<TABLE BORDER=2><CAPTION>     </CAPTION>"); 
out.println("<TR><TD>  </TD>" + "<TD>" + 
(String)hashTable.get(new String("name")) + "</TD></TR>"); 
out.println("<TR><TD>  </TD>" + "<TD>" + 
(String)hashTable.get(new String("college"))+"</TD></TR>"); 
out.println("<TR><TD>  </TD>" + "<TD>" + 
(String)hashTable.get(new String("telephone")) + "</TD></TR>"); 
out.println("<TR><TD>  </TD>" + "<TD>" + 
(String)hashTable.get(new String("notes")) + "</TD></TR>"); 
out.println("</TABLE>"); 
%> 
</BODY> 
</HTML>