我正在做一个网络蜘蛛程序,目前可以循环抓取网页了,由于刚刚学习java对java还不是很熟悉,在存取数据库方面不太会目前有个小程序 显示SQL数据库中表的内容的,可以运行 就是不知道如何应用的我的蜘蛛程序中啊 DBTester.java
import java.sql.*;
public class DBTester{
public static void main(String args[])throws Exception{
Connection con;
Statement stmt;
ResultSet rs;
//加载驱动器
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//注册L驱动器
DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
//连接到数据库的URL
String dbUrl = "jdbc:microsoft:sqlserver://localhost:1479;DatabaseName=SearchDB";
String dbUser="sa";
String dbPwd="lovefree";
//建立数据库连接
con = java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);
//创建一个Statement对象
stmt = con.createStatement();
//
rs= stmt.executeQuery("SELECT id,url,title,content,size from webcontent");
while(rs.next()){
String title=rs.getString(3);
System.out.println("title="+title);
}
System.out.println("\nDatabase Information ");
//释放相关资源
rs.close();
stmt.close();
con.close();
}
}
蜘蛛程序有三个类文件 CheckLinks.java Spider.java 和接口类ISpiderReportable.java我想在Spider.java类中 在得到源文件是进行数据库存储,可就是把代码挪动不了里面去,老是出错还请高手指点啊 呵呵
import java.sql.*;
public class DBTester{
public static void main(String args[])throws Exception{
Connection con;
Statement stmt;
ResultSet rs;
//加载驱动器
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//注册L驱动器
DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
//连接到数据库的URL
String dbUrl = "jdbc:microsoft:sqlserver://localhost:1479;DatabaseName=SearchDB";
String dbUser="sa";
String dbPwd="lovefree";
//建立数据库连接
con = java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);
//创建一个Statement对象
stmt = con.createStatement();
//
rs= stmt.executeQuery("SELECT id,url,title,content,size from webcontent");
while(rs.next()){
String title=rs.getString(3);
System.out.println("title="+title);
}
System.out.println("\nDatabase Information ");
//释放相关资源
rs.close();
stmt.close();
con.close();
}
}
蜘蛛程序有三个类文件 CheckLinks.java Spider.java 和接口类ISpiderReportable.java我想在Spider.java类中 在得到源文件是进行数据库存储,可就是把代码挪动不了里面去,老是出错还请高手指点啊 呵呵
这是ms Sql2.0驱动的,3个驱动jar包的连接程序:
String Driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"; //连接SQL数据库的方法
String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_name"; //db_name为数据库名
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver).new Instance(); //加载数据可驱动
Connection con=DriverManager.getConnection(URL,UserName,Password);这是ms Sql3.0驱动的,1个驱动jar包的连接程序:
String Driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; //连接SQL数据库的方法
String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_name"; //db_name为数据库名
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver).new Instance(); //加载数据可驱动
Connection con=DriverManager.getConnection(URL,UserName,Password); lz你先明确下自己用的哪种驱动,然后就是把这段加载驱动,连接db的程序替换掉你的,应该就没问题了
import java.sql.*;
public class GetCon {
public Connection con;
public Statement st;
public PreparedStatement pst;
public ResultSet rs;
public GetCon(){
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ex) {
System.out.print("数据库驱动加载错误!");
}
} synchronized public void getCon(){
if(con==null){
try {
con = DriverManager.getConnection("Jdbc:Odbc:pet");
} catch (SQLException ex) {
System.out.print("GetCon中获取con 出错!");
}
}
} public void closeCon(){
try {
if(rs!=null){
rs.close();
}
if(pst!=null){
pst.close();
}
if(con!=null){
con.close();
} } catch (SQLException ex) {
System.out.print("GetCon中关闭con时出错!");
}
}
}使用时继承该类,里面方法没有具体写。当时都是自己实现自己的,可以参考下微软的DBhelp.
public class DBConn
{
String url="jdbc:microsoft:sqlserver://10.58.4.32:1433;DatabaseName=sap_db";
String user="sa";
String psw="abcd$7640"; String drivername="com.microsoft.jdbc.sqlserver.SQLServerDriver"; ResultSet rs=null;
Statement stmt=null;
Connection conn=null;
public DBConn(){} public void openconn()throws Exception{
try{
Class.forName(drivername);
conn=DriverManager.getConnection(url,user,psw);
}
catch(Exception e){
System.out.println(e.getMessage());
} } public ResultSet executeQuery(String sql){
try{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}
catch(SQLException e){
System.err.println("executeQuery:"+e.getMessage());
}
return rs;
}
public void executeUpdate(String sql){
try{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
stmt.executeUpdate(sql);
}
catch(Exception e){
System.err.println("executeUpdate:"+e.getMessage());
}
}
public void closeconn(){
try{
conn.close();
}
catch(Exception e){
System.out.println(e);
}
}
public void closestmt(){
try{
stmt.close();
}
catch(Exception e){
System.out.println(e);
}
}
}
public class DBAction{
String dburl = "jdbc:microsoft:sqlserver://localhost:1479;DatabaseName=SearchDB";
String dbuser="sa";
String dbPwd="lovefree";
String drivername="com.microsoft.jdbc.sqlserver.SQLServerDriver";
ResultSet rs=null;
Statement stmt=null;
Connection conn=null;
public DBAction(){}
public void openconn()throws Exception{
try{
Class.forName(drivername);
conn=DriverManager.getConnection(dburl,dbuser,dbPwd);
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
public ResultSet executeQuery(String sql){
try{
//stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch(Exception e){
System.err.println("executeQuery:"+e.getMessage());
}
return rs;
}
public void executeUpdate(String sql){
try{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
stmt.executeUpdate(sql);
}
catch(Exception e){
System.err.println("executeQuery:"+e.getMessage());
}
}
public void closeconn(){
try{
conn.close();
}
catch(Exception e){
System.out.println(e);
}
}
public void closestmt(){
try{
stmt.close();
}
catch(Exception e){
System.out.println(e);
}
}
}测试文件为 DBTester.java import java.sql.*;
public class DBTester{
public static void main(String args[])throws Exception{DBAction dbaction = new DBAction();
dbaction.openconn();
/* * 查询数据表 例子 *
String sql= "SELECT uid,name from sysusers";
ResultSet rs = dbaction.executeQuery(sql);
while(rs.next()){
String name=rs.getString(2);
System.out.println("name="+name);
}
*///更新数据表 例子
String nameStr="cola";
int idInt=888;
String sql= "insert into webcontent (title,size)"+"values('"+nameStr+"',"+idInt+")";
dbaction.executeUpdate(sql);
System.out.println("OK ...");
dbaction.closeconn();
dbaction.closestmt();}
}我的疑问是
在这个单独的文件中 main函数中用还是有效的,但放入其他类文件中使用的时候就会抛出异常 让我捕捉,还得请教请教你我放进另一个类文件中是这样使用的添加如下代码
import java.sql.*; //操作数据库 used// 这部分代码是在另一个函数中调用doActionDB(String title,String URLs)
doActionDB (title,urlHost);
// 调用代码结束
public void doActionDB(String title,String URLs)throws Exception{ //操作数据库函数
DBAction dbaction = new DBAction();
dbaction.openconn();
String sql= "SELECT uid,name from sysusers";
ResultSet rs = dbaction.executeQuery(sql);
while(rs.next()){
String name=rs.getString(2);
System.out.println("name="+name);
}
System.out.println("OK ...");
dbaction.closeconn();
dbaction.closestmt();
}
就是不知道改使用那个操作数据库的类DBAction.java 啊???
声明了异常,
当你调用这个方法的时候,你可以有两种处理:
1)try该异常
2)继续声明该异常