0734w-月下竹音

0734是来自家乡的声音

常用链接

统计

最新评论

2006年3月11日 #

ORACLE没有监听器错误

一、运行监听器
在CMD中输入以下内容.
C:\>lsnrctl
LSNRCTL for 32-bit Windows: Version 8.1.6.0.0 - Production on 14-3月 -2003 14:17
:51(c) Copyright 1998, 1999, Oracle Corporation. All rights reserved.

欢迎来到LSNRCTL,请键入"help"以获得信息。

LSNRCTL> status
连接至(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=robust)(PORT=1521)))
TNS-01103: 地址的协议专用组件指定不正确
TNS-12541: TNS:无监听器
TNS-12560: TNS:协议适配器出现错误
TNS-00511: 无监听器
32-bit Windows Error: 61: Unknown error

LSNRCTL> start
启动tnslsnr:请稍候...

Failed to start service, error 3.
TNS-12536: TNS:可能会阻碍*作
TNS-12560: TNS:协议适配器出现错误
TNS-00506: *作可能阻塞
32-bit Windows Error: 997: Unknown error

二,解决方案


修改 listerner.ora(..\ora92\network\admin),文件,确保如下:
LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = tiger)(PORT = 1521))
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = E:\oracle\ora92)
      (SID_NAME = ORCL)
    )
  )

最后回到CMD中启动
LSNRCTL> start

posted @ 2006-05-28 15:26 sparkwu 阅读(2930) | 评论 (3)编辑 收藏

HP-unix最基本操作

1. telnet 10.202.10.1   连接主机
2. pwd                  查看当前目录
3. ls                   查看当前文件
4. get filename.zip     从FTP中拷贝filename.zip到本地
5. mkdir  test2         建立test2目录
6. quit:               同bye,退出ftp会话。
7. mkdir                建立文件夹
8. rmdir dir-name:     删除目录。
9. put local-file[remote-file]:              将本地文件local-file传送至远程主机
10. cp /etc/passwd.txt   /etc/passwd.bak.txt   复制 (copy) 之指令
11. cdup                                       进入远程主机目录的父目录

posted @ 2006-05-12 10:45 sparkwu 阅读(280) | 评论 (0)编辑 收藏

hp-unix 操作命令!

操作命令
1-1.处理目录
pwd: 显示当前工作目录&&
cd directory_path: 更改目录&&
cd: 更改为主目录&&
mkdir directory_name: 创建目录&&
rmdir directory_name: 删除空目录&& 

1-2.处理文件
elm: 阅读邮件&&
ls: 列举当前目录下的文件和目录&&
ls -a: 列举所有文件或目录包括隐藏点文件&
lsf: 列举文件并用/ 标记目录名&
compress filename: 压缩文件
uncompress filename: 解压缩文件
vi file_name: 创建或编辑文件
more file_name: 显示文件内容 (按q 退出)
head file_name: 显示文件的前10 行
tail file_name: 显示文件的后10 行
cp file_name file_copy: 复制文件
mv old_file new_file: 将文件重命名为新文件名
cat file1 >> file2: 将file1 附加到file2 的结尾处
rm file: 删除file&
rm -rf dir_name: 删除目录dir_name 及其所有文件
spell file_name: 在文件中检查拼写

1-3.打印
lp file_name: 打印文件
lpstat -t: 确定打印机的状态
cancel request_id: 取消打印请求

1-4.查找和组织
find .-name 'x*': 在当前目录和子目录中查找以x 开头的文件
grep word *: 在当前目录下的所有文件中查找word 一词的所有匹配
sort listfile: 按字母顺序对listfile 进行排序
date: 显示日期和时间
alias: 列举所有命令的别名
man command_name: 查找HP-UX 命令信息
echo $PATH: 确定PATH 设置
echo $SHELL: 确定所用的shell 

1-5.安全操作
passwd: 创建或更改口令
ll file_name: 显示文件的权限
ll -d directory_name: 显示目录的权限
chmod class=permissions name: 更改文件或目录权限
chown user name: 更改文件或目录的所有权

1-6.系统操作
clear: 清除屏幕
set -o editor_name: 设置命令行编辑器
TERM=term_type: 设置终端类型(从/usr/lib/terminfo 中选择term_type)&
ps -ef: 列举当前进程状态和PID&
kill PID: 终止进程
passwd: 创建或更改口令
command < infile: 将输入从文件重定向到命令
command1 | command2: 使用管道连接两个进程

posted @ 2006-05-11 17:16 sparkwu 阅读(636) | 评论 (0)编辑 收藏

(转)Java + XML = JDOM

Java + XML = JDOM ! 
这就是JDOM设计者的目标。如果你曾经使用过烦人的SAX或是DOM来处理XML,你就会知道为什么 要有JDOM或者是JAXB。在今年(2002)的JavaOne会议上JDOM的主要创始人Jason Hunter有一篇精彩的演讲介绍了JDOM技 术,题目就是JDOM Makes XML Easy。 
获得并安装JDOM 
在http://jdom.org可以下载JDOM的最新 版本。以JDOM beta8的2进制版本为例。下载后解压缩,JDOM的jar文件就是build目录下的文件jdom.jar,将之加入类路径。另外 JDOM还需要lib目录下那些jar文件如xerces.jar,jaxp.jar的支持。如果在使用中出现以下错误: 
java.lang.NoSuchMethodError 
或 
java.lang.NoClassDefFoundError: org/xml/sax/SAXNotRecognizedException 
你需要保证xerces.jar文件在CLASSPATH中位于其他XML类,如JAXP或Crimson之前,这些类文件,包括以前老版本的xerces,可能不支持SAX2.0或DOM Level 2。于是导致了上面的错误。 

一个简单的例子 
JDOM的处理方式有些类似于DOM,但它主要是用SAX实现的,你不必担心处理速度和内存的问题。另外,JDOM中几乎没有接口,的类全部是实实在在的类,没有类工厂类的。

下面是实例用的XML文件:

<?xml version="1.0" encoding="GBK"?>
<书库>
<书>
<书名>Java编程入门</书名>
<作者>张三</作者>
<出版社>电子出版社</出版社>
<价格>35.0</价格>
<出版日期>2002-10-07</出版日期>
</书>
<书>
<书名>XML在Java中的应用</书名>
<作者>李四</作者>
<出版社>希望出版社</出版社>
<价格>92.0</价格>
<出版日期>2002-10-07</出版日期>
</书>
</书库>

下面是操作XML文件的Bean:
package xml;
/**
* XML的读写操作Bean
*/
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.output.*;
import org.jdom.input.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class XmlBean{
private String bookname,author,pub,price,pubdate;
public String getbookname() { return bookname;}
public String getauthor() { return author;}
public String getpub() { return pub;}
public String getprice() { return price;}
public String getpubdate() { return pubdate;}
public void setbookname(String bookname) { this.bookname =bookname ; }
public void setauthor(String author) { this.author =author; }
public void setpub(String pub) { this.pub =pub ; }
public void setprice(String price) { this.price =price ; }
public void setpubdate(String pubdate) { this.pubdate =pubdate ; }
public XmlBean(){}
/**
* 读取XML文件所有信息
*/
public Vector LoadXML(String path)throws Exception{
Vector xmlVector = null;
FileInputStream fi = null;
try{
fi = new FileInputStream(path);
xmlVector = new Vector();
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(fi);
Element root = doc.getRootElement(); //得到根元素
List books = root.getChildren(); //得到根元素所有子元素的集合
Element book =null;
XmlBean xml =null;
for(int i=0;i<books.size();i++){
xml = new XmlBean();
book = (Element)books.get(i ); //得到第一本书元素
xml.setbookname(book.getChild("书名").getText());
xml.setauthor(book.getChild("作者").getText());
xml.setpub(book.getChild("出版社").getText());
xml.setprice(book.getChild("价格").getText());
xml.setpubdate(book.getChild("出版日期").getText());
xmlVector.add(xml);
}
}
catch(Exception e){
System.err.println(e+"error");
}
finally{
try{
fi.close();
}
catch(Exception e){
e.printStackTrace();
}
}
return xmlVector;
}
/**
* 删除XML文件指定信息
*/
public static void DelXML(HttpServletRequest request)throws Exception{
FileInputStream fi = null;
FileOutputStream fo = null;
try{
String path=request.getParameter("path");
int xmlid=Integer.parseInt(request.getParameter("id"));
fi = new FileInputStream(path);
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(fi);
Element root = doc.getRootElement(); //得到根元素
List books = root.getChildren(); //得到根元素所有子元素的集合
books.remove(xmlid);//删除指定位置的子元素
String indent = " ";
boolean newLines = true;
XMLOutputter outp = new XMLOutputter(indent,newLines,"GBK");
fo=new FileOutputStream(path);
outp.output(doc,fo);
}
catch(Exception e){
System.err.println(e+"error");
}
finally{
try{
fi.close();
fo.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
/**
* 添加XML文件指定信息
*/
public static void AddXML(HttpServletRequest request)throws Exception{
FileInputStream fi = null;
FileOutputStream fo = null;
try{
String path=request.getParameter("path");
fi = new FileInputStream(path);
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(fi);
Element root = doc.getRootElement(); //得到根元素
List books = root.getChildren(); //得到根元素所有子元素的集合
String bookname=request.getParameter("bookname");
String author=request.getParameter("author");
String price=request.getParameter("price");
String pub=request.getParameter("pub");
String pubdate=request.getParameter("pubdate");
Text newtext;
Element newbook= new Element("书");
Element newname= new Element("书名");
newname.setText(bookname);
newbook.addContent(newname);
Element newauthor= new Element("作者");
newauthor.setText(author);
newbook.addContent(newauthor);
Element newpub= new Element("出版社");
newpub.setText(pub);
newbook.addContent(newpub);
Element newprice= new Element("价格");
newprice.setText(price);
newbook.addContent(newprice);
Element newdate= new Element("出版日期");
newdate.setText(pubdate);
newbook.addContent(newdate);
books.add(newbook);//增加子元素
String indent = " ";
boolean newLines = true;
XMLOutputter outp = new XMLOutputter(indent,newLines,"GBK");
fo=new FileOutputStream(path);
outp.output(doc,fo);
}
catch(Exception e){
System.err.println(e+"error");
}
finally{
try{
fi.close();
fo.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
/**
* 修改XML文件指定信息
*/
public static void EditXML(HttpServletRequest request)throws Exception{
FileInputStream fi = null;
FileOutputStream fo = null;
try{
String path=request.getParameter("path");
int xmlid=Integer.parseInt(request.getParameter("id"));
fi = new FileInputStream(path);
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(fi);
Element root = doc.getRootElement(); //得到根元素
List books = root.getChildren(); //得到根元素所有子元素的集合
Element book=(Element)books.get(xmlid);
String bookname=request.getParameter("bookname");
String author=request.getParameter("author");
String price=request.getParameter("price");
String pub=request.getParameter("pub");
String pubdate=request.getParameter("pubdate");
Text newtext;
Element newname= book.getChild("书名");
newname.setText(bookname);//修改书名为新的书名
Element newauthor= book.getChild("作者");
newauthor.setText(author);
Element newpub= book.getChild("出版社");
newpub.setText(pub);
Element newprice= book.getChild("价格");
newprice.setText(price);
Element newdate= book.getChild("出版日期");
newdate.setText(pubdate);
//books.set(xmlid,book);//修改子元素
String indent = " ";
boolean newLines = true;
XMLOutputter outp = new XMLOutputter(indent,newLines,"GBK");
fo=new FileOutputStream(path);
outp.output(doc,fo);
}
catch(Exception e){
System.err.println(e+"error");
}
finally{
try{
fi.close();
fo.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
}

下面是操作的jsp文件:
<%@ page contentType="text/html;charset=GBK" %>
<%@ page language="java" import="java.util.*,xml.*"%>
<html>
<head>
<title>读取XML文件资料</title>
</head>
<body>
<h3 align="center">JDOM操作XML文件</h3>
<p align="center">读取XML文件中的所有资料</p>
<center>
<table border="1" cellpadding="0" cellspacing="1" style="border-collapse: collapse" width="80%" id="AutoNumber1">
<tr>
<td align="center" width="92">书名</td>
<td align="center" width="92">作者</td>
<td align="center" width="92">出版社</td>
<td align="center" width="92">价格</td>
<td align="center" width="92">出版日期</td>
<td align="center" width="94">操作</td>
</tr>
</table>
<%
String path = application.getRealPath("/test/xml/")+"testC.xml";
XmlBean xml=new XmlBean();
Vector xmlall=xml.LoadXML(path);
for(int i=0;i<xmlall.size();i++){
xml=(XmlBean)xmlall.elementAt(i );
/**out.println("书名:"+xml.getbookname()+"<br>");
out.println("作者:"+xml.getauthor()+"<br>");
out.println("出版社:"+xml.getpub()+"<br>");
out.println("价格:"+xml.getprice()+"<br>");
out.println("出版日期:"+xml.getpubdate()+"<br><br>");
*/
%>
<table border="1" cellpadding="0" cellspacing="1" style="border-collapse: collapse" width="80%" id="AutoNumber2">
<tr>
<td align="center" width="92"><%=xml.getbookname()%></td>
<td align="center" width="92"><%=xml.getauthor()%></td>
<td align="center" width="92"><%=xml.getpub()%></td>
<td align="center" width="92"><%=xml.getprice()%></td>
<td align="center" width="92"><%=xml.getpubdate()%></td>
< td align="center" width="94"><a href="xmlok.jsp?act=del&id=< %=i%>&path=<%=path%>">删除</a></td>
</tr>
</table>
<%}%>
</center>
<form method="POST" action="xmlok.jsp">
<p align="center">
<input type="radio" value="add" checked name="act">添加资料 <input type="radio" value="edit" name="act">编辑资料
序 号:<select size="1" name="id">
<%for(int i=0;i<xmlall.size();i++){%>
<option value="<%=i%>">第<%=i+1%>条</option>
<%}%>
</select><br>
书 名:<input type="text" name="bookname" size="20"><br>
作 者:<input type="text" name="author" size="20"><br>
出版社:<input type="text" name="pub" size="20"><br>
价 格:<input type="text" name="price" size="20"><br>
日 期:<input type="text" name="pubdate" size="20"></p>
<input type="hidden" name="path" value="<%=path%>">
< p align="center"><input type="submit" value="提交" name="B1">< input type="reset" value="重置" name="B2"></p>
</form>
</body>
</html>

下面是处理上一文件提交的jsp文件:
<%@ page contentType="text/html;charset=GBK" %>
<%@ page language="java" import="xml.*"%>
<%if(request.getParameter("act")!=null && request.getParameter("act").equals("add")){
XmlBean.AddXML(request);
out.println("<p align='center'><br><br>添加成功<br><br><a href=''>返回</a>");
}
else if(request.getParameter("act")!=null && request.getParameter("act").equals("del")){
XmlBean.DelXML(request);
out.println("<p align='center'><br><br>删除成功<br><br><a href=''>返回</a>");
}
else if(request.getParameter("act")!=null && request.getParameter("act").equals("edit")){
XmlBean.EditXML(request);
out.println("<p align='center'><br><br>修改成功<br><br><a href=''>返回</a>");
}
else{out.print("<p align='center'><br><br>非法操作<br><br><a href=''>返回</a>");}

posted @ 2006-04-06 18:19 sparkwu 阅读(479) | 评论 (0)编辑 收藏

(收藏)用JDOM处理XML文档

用JDOM处理XML文档


 用JDOM处理XML文档(转载)
关键词:Java、JDOM、XML、JAXB 

(一)JDOM的介绍以及与JAXB的比较 

Java + XML = JDOM ! 
这 就是JDOM设计者的目标。如果你曾经使用过烦人的SAX或是DOM来处理XML,你就会知道为什么要有JDOM或者是JAXB。在今年(2002)的 JavaOne会议上JDOM的主要创始人Jason Hunter有一篇精彩的演讲介绍了JDOM技术,题目就是 JDOM Makes XML Easy。 
在那篇文档里,JDOM被拿来与DOM比较,而我更愿意拿它同JAXB比较。因为JAXB和JDOM 都是为了在Java中提供比DOM和SAX更为方便的XML处理接口而开发的,并且通过完全不同的途径来解决这个问题。JDOM的处理方式是与DOM类似 的树操作。而JAXB通过DTD和绑定模式来生成访问XML文档的Java代码,将XML映射成了Java对象来操作。你可以根据项目的需要和个人喜好来 决定采用哪一个。 
JDOM与JAXB的比较,从本身的特点来看: 
1) JDOM比JAXB更容易上手。使用JAXB首先要会编写DTD,然后还要会编写绑定模式。JDOM没有这样的要求,如果你会Java和XML,甚至可以说光是看JDOM的javadoc文档就能够使用JDOM。 
2) JAXB编写好DTD和绑定模式以后,XML文档被映射成了Java对象,其数据就是Java对象的属性,连数据类型都做好了转换,因此,访问XML文档比JDOM要简便,可以说是一劳永逸。 
3) JAXB由某个DTD和绑定模式生成的代码只能访问该DTD所约束的文档。如果想要访问其他XML文档,需要再编写DTD和绑定模式。JDOM可以处理任何XML文档,包括受约束的和不受约束的。 

目 前JDOM和JAXB都没有正式版本。JDOM的最新版本是beta8,JAXB是1.0 early access,其规范版本是0.21。相对而言, JDOM更成熟一些。例如JAXB不支持名字空间、不能向XML文档写入处理指令,有时我们需要保留的换行符和首尾空格在JAXB中自动过滤掉了,就连放 在<![CDATA[ 和 ]]>里面也不能幸免。JDOM就没有这些限制。如果说以上的3点比较是JDOM和JAXB本身的特点所决定的, 几乎不可能改变,那么这里表明,JAXB还需要更多的工作。 

(二)获得并安装JDOM 
在http://jdom.org可以 下载JDOM的最新版本。以JDOM beta8的2进制版本为例。下载后解压缩,JDOM的jar文件就是build目录下的文件jdom.jar,将 之加入类路径。另外JDOM还需要lib目录下那些jar文件如xerces.jar的支持。如果在使用中出现以下错误: 
java.lang.NoSuchMethodError 
或 
java.lang.NoClassDefFoundError: org/xml/sax/SAXNotRecognizedException 
你需要保证xerces.jar文件在CLASSPATH中位于其他XML类,如JAXP或Crimson之前,这些类文件,包括以前老版本的xerces,可能不支持SAX2.0或DOM Level 2。于是导致了上面的错误。 

(三)一个简单的例子 
JDOM的处理方式有些类似于DOM,但它主要是用SAX实现的,你不必担心处理速度和内存的问题。另外,JDOM中几乎没有接口,的类全部是实实在在的类,没有类工厂类的。其最重要的一个包org.jdom中主要有以下类: 
? Attribute 
? CDATA 
? Comment 
? DocType 
? Document 
? Element 
? EntityRef 
? Namespace 
? ProcessingInstruction 
? Text 
数据输入要用到XML文档要通过org.jdom.input包,反过来需要org.jdom.output。如前面所说,关是看API文档就能够使用。 
我们的例子读入XML文件exampleA.xml,加入一条处理指令,修改第一本书的价格和作者,并添加一条属性,然后写入文件exampleB.xml: 
//exampleA.xml 
<?xml version="1.0" encoding="GBK"?> 
<bookList> 
   <book> 
       <name>Java编程入门</name> 
       <author>张三</author> 
       <publishDate>2002-6-6</publishDate> 
       <price>35.0</price> 
   </book> 
   <book> 
       <name>XML在Java中的应用</name> 
       <author>李四</author> 
       <publishDate>2002-9-16</publishDate> 
       <price>92.0</price> 
   </book> 
</bookList> 

 
 
---------------------------------------------------
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
import java.io.*;
public class cute{

public static void main(String args[]){
try{

org.jdom.input.SAXBuilder sb=new org.jdom.input.SAXBuilder();
//创建文档
org.jdom.Document    doc=sb.build(new FileInputStream("c:\\example.xml");
//加入一条处理指令
org.jdom.ProcessingInstruction pi = new ProcessingInstruction("xml-stylesheet","href=\"bookList.html.xsl\" type=\"text/xsl\"";
//把这条处理指令,加入文档中
doc.addContent(pi);
//获得这个文档得跟元素
org.jdom.Element el=doc.getRootElement();
//获得这个跟元素,的所有子元素
java.util.List ls=el.getChildren();
//得到第一个子元素
org.jdom.Element book=(Element)ls.get(0);
//给这个字元素添加一条属性
org.jdom.Attribute attr=new Attribute("hot","true";
book.setAttribute(attr);

//获得这个元素的子元素,(指定)
org.jdom.Element el2=book.getChild("author";
//输出这个元素的值
System.out.println(el2.getName());
//给这个元素的值改个名字
el2.setText("cute";

//再指定元素获得这个值
org.jdom.Element el3=book.getChild("price";
//给这个值换个值
el3.setText(Float.toString(50.0f));
String a="";
boolean bool=true;

org.jdom.output.XMLOutputter xml= new org.jdom.output.XMLOutputter(a,bool,"gb2312";
xml.output(doc,new FileOutputStream("c:\\cute.xml");

}catch(Exception e){
System.out.println(e.getMessage());

}



}
}

posted @ 2006-04-06 18:18 sparkwu 阅读(725) | 评论 (0)编辑 收藏

(转)应用JDOM处理数据库到XML转换的JSP实现

     摘要: 一、 JDOM 介绍 我们知道 DOM 是用于与平台和语言无关的方式表示 XML ...  阅读全文

posted @ 2006-04-06 10:18 sparkwu 阅读(478) | 评论 (0)编辑 收藏

(转)JDBC应用

使用JDBC进行访问数据库,首先要确保安装和运行了您选择的数据库,并且驱动程序可用。(可以从 http://industry.java.sun.com/products/jdbc/drivers 下载 JDBC 驱动程序)
Java与数据库交互通常由以下几步组成:
     1.装入数据库驱动程序 (JDBC 驱动程序或 JDBC-ODBC 桥) 。
     2.创建数据库的 Connection。
     3.创建一个 Statement 对象。该对象实际执行 SQL 或存储过程。
     4.创建一个 ResultSet,然后用执行查询的结果填充(如果目标是检索或直接更新数据)。
     5.从 ResultSet 检索或更新数据。

一、实例化驱动

访问数据库,先装入 JDBC 驱动程序,然后由 DriverManager创建与数据库相应的驱动程序的连接来确定。使用Class.forName() 直接装入,向 DriverManager 注册
示例:
public class Pricing extends Object {

   public static void main (String args[]){

       String driverName = "JData2_0.sql.$Driver";

      try {
         Class.forName(driverName);
      } catch (ClassNotFoundException e) {
         System.out.println("Error creating class: "+e.getMessage());
      }
   }
}

二、创建Connection

示例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Pricing extends Object {
   public static void main (String args[]){
      String driverName = "JData2_0.sql.$Driver";
      String connectURL = 
      "jdbc:JDataConnect://127.0.0.1/pricing";
      Connection conn = null;   
      try
      {
         Class.forName(driverName);
         conn = DriverManager.getConnection(connectURL);
      } catch (ClassNotFoundException e) {
         System.out.println("Error creating class: "+e.getMessage());
      } catch (SQLException e) {
          System.out.println("Error creating connection:"+e.getMessage());
      }
      finally {
         System.out.println("Closing connections...");
         try {
            conn.close();
         } catch (SQLException e) {
            System.out.println("Can't close connection.");
         }
      }

   }
}
各种数据库使用JDBC连接的方式
//DB2
String driverName = "com.ibm.db2.jcc.DB2Driver";
String connectURL = "jdbc:db2://localhost:5000/sample";
Class.forName(driverName);
Connection conn = DriverManager.getConnection(connectURL,”user”,”password”);

//Oracle(thin模式)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);

//SQL
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb"; String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);

//Sybase
Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url =" jdbc:sybase:Tds:localhost:5007/myDB";
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);

//MySQL
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1" Connection conn= DriverManager.getConnection(url);

//ACCESS
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
String url="jdbc:odbc:Driver={MicroSoft Access Driver(*.mdb)};DBQ="+application.getRealPath("/Data/MyDb.mdb");
Connection conn = DriverManager.getConnection(url,"","");
Statement stmtNew=conn.createStatement() ;

三、创建 Statement 对象

Statement 对象用于将 SQL 语句发送到数据库中。有三种 Statement 对象,它们都作为在给定连接上执行 SQL 语句的包容器:Statement、PreparedStatement(它从Statement 继承而来)和 CallableStatement(它从 PreparedStatement 继承而来)。它们都专用于发送特定类型的 SQL 语句: Statement 对象用于执行不带参数的简单SQL 语句;PreparedStatement 对象用于执行带或不带 IN 参数的预编译 SQL 语句(当要反复执行某一特定查询时,PreparedStatement 可能最有用);CallableStatement 对象用于执行对数据库已存储过程的调用。CallableStatement 和 PreparedStatement之间的一个区别是:除了通常创建的 ResultSet 之外,CallableStatement 还可以提供 OUT 参数

Statement实例:
在程序中增加
import java.sql.Statement;
在程序生成Connection对象后,利用该对象生成Statement 对象
Statement statement = null;
      try {
         statement = conn.createStatement();
      } catch (SQLException e) {
         System.out.println("SQL Error: "+e.getMessage());
      }

PreparedStatement实例
...
 statement = conn.prepareStatement("select * from test where "+ "id < ? and id > ?");
 statement.setInt(1, 5);
 statement.setInt(2, 10);
 resultset = statement.executeQuery(); 
...
CallableStatement实例

四、执行Statement

Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和execute。使用哪一个方法由 SQL 语句所产生的内容决定。

  方法 executeQuery 用于产生单个结果集的语句,例如 SELECT 语句。
  方法 executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
  方法 execute 用于执行返回多个结果集、多个更新计数或二者组合的语句。

示例:
import java.sql.ResultSet;
ResultSet Rs = null;
在生成Statement后执行
Rs = statement.executeQuery("SELECT * FROM test");

五、ResultSet

ResultSet 被创建之后,它就有一个引用数据集内相对位置的“指针”。在 ResultSet语句返回之后(即使表为空),该指针正好位于第一行的“上面”。要到达实际数据的第一行,应用程序调用 next() 方法。该方法返回一个 Boolean 值,指出在新位置处是否有行存在。如果没发现数据,则 next() 返回 false。
Getxxx()与wasNull()
ResultSet.getXXX 方法获取常见的 JDBC 数据类型
对非常大的行值使用流
getBinaryStream 返回只提供数据库原字节而不进行任何转换的流。
getAsciiStream 返回提供单字节 ASCII 字符的流。
getUnicodeStream 返回提供双字节 Unicode 字符的流。
wasNull() 方法来确定是否有特定的数据片为空
while (resultset.next()) {
//根据字段名
System.out.print(resultset.getString("id"));
//根据索引
System.out.print(resultset.getString(2));
……
}
通过ResultSetMetaData类还可以获取元数据
...
import java.sql.ResultSetMetaData;
public class Pricing extends Object {
...
      Statement statement = null;
      ResultSet resultset = null;
      ResultSetMetaData resultmetadata = null;
      try {
         statement = conn.createStatement();
         resultset = statement.executeQuery("select * from products"); 
  
         //Get the ResultSet information
         resultmetadata = resultset.getMetaData();
         //Determine the number of columns in the ResultSet
         int numCols = resultmetadata.getColumnCount();
  
         while (resultset.next()) {
            for (int i=1; i <= numCols; i++) {
               //For each column index, determine the column name
               String colName = resultmetadata.getColumnName(i);
               //Get the column value
               String colVal = resultset.getString(i);
               //Output the name and value
               System.out.println(colName+"="+colVal);
            }
            //Output a line feed at the end of the row
            System.out.println(" ");
         }
...
不必关闭 ResultSet;当产生它的 Statement 关闭、重新执行或用于从多结果序列中获取下一个结果时,该 ResultSet 将被 Statement 自动关闭。

posted @ 2006-03-11 17:47 sparkwu 阅读(595) | 评论 (0)编辑 收藏