java中的数据库连接问题

来源:互联网 发布:ajax获取数据库数据 编辑:程序博客网 时间:2024/05/17 02:06

2009-06-30

 

Q:第一:关于try...catch...finally,我的理解如下:try中放置的是要执行的代码,如果发生了异常代码就跳转到catch,最后finally中不管是什么情况都要执行的代码;所以我们一般把关闭文件以及关闭数据库连接的代码都放到finally中执行。

我现在的疑问是:因为finally是可选的,没有使用finally的话,那么关闭数据库的链接的这个操作要放在哪里呢? 
第二:因为在finally块中,再次可以嵌入try....catch....的,那么关闭数据库的操作conn.close()是要放在try块的吗?try {
  result.close();
  Query.close();
  conn.close();
  } catch (SQLException e) {

是不是要写成这样呢?

 

A:如果没有finally,在你每次操作结束后直接判断一下conn等是否为空,然后colse掉就行了。也就是你说的try里面,try内的代码如果出现异常会发送到catch中

A:不用finally的话,就写在try里面就可以了,你在用完一个链接的时候给关掉就可以了,没必要一定要写finally。

 

 

2:java怎样连接数据库

A://就是用jdbc-odbc桥做吧,前提是你已经配好数据源
/**
* 主要完成数据库的连接并返回该连接
*/

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.DriverManager;

public class GetDBConnection
{
/**
  * 返回到数据库的一个连接
  */
public static Connection getConnection()
{
      Connection con = null;
      String url = "jdbc:odbc:数据库名字";
   String userName ="sxp";
   String password ="sxp";
   String driver="sun.jdbc.odbc.JdbcOdbcDriver";
   try
   {
    Class.forName(driver);
    con = DriverManager.getConnection(url, userName, password);
   }
   catch(SQLException e)
   {
    e.printStackTrace();
   }
   catch(ClassNotFoundException ex)
   {
    ex.printStackTrace();
   }

   return con;
}

/**
  * 销毁数据库的连接,释放系统资源
  */
public static void destroyConnection(Connection con, Statement stmt)
{
  try
  {
      stmt.close();
      con.close();
  }
  catch(SQLException e)
  {
      System.out.println("数据库没有正常关闭!!!");
   e.printStackTrace();
  }
}
}

 

Q:

Java 怎样才能作一个连接数据库的登陆?

数据库用JDBC 。 我想作个用户名密码登陆的界面。
用户名是1 密码也是1 然后能登陆的到想登陆的界面、
主要是怎么判断用户名和密码 那块。 请指教下。 最好
带个例子!
A:WEB JSP:
<form name="LoginForm" action="/**.do(/servletName)" method="post">
  UserName: <input name="UserName" value="" type="text"/>
  PassWord: <input name="PassWord" value="" type="password"/>
     <input value="submit" type="submit"/>
     <input value="reset" type="reset"/>
</form>
--------------------------------------------------------------------------------
Answer :

  Connection Class:
import java.sql.*;
import java.util.*;

public class DBUtil {
  public static Connection CONN; 
 
  static {
   Class.forName("***This is DB New***");
   CONN = DriverManager.getConnection("***This is DB type URL***","***UserName(DB)***","***PassWord(DB)***");  
  }
 
  //Get a Connection
  public static Connction getConnection() throws SQLException {
   return this.CONN;
  }
 
  //Close a Connection
  public static void closeConnection() throws SQLException {
   this.CONN.close();
  }
}



  Check Class:
import java.Util.*;
import java.sql.*;

public class CheckLogin {
  public static String SELECT_SQL = "";

  public boolean checkLogin(String UserName,String PassWord) {
   Boolean boolean = false;
  
   try {
    Connection con = DBUtil.getConnection();
  
    this.SELECT_SQL = "select * from TableName where username = ? and password = ?";
    PreparedStatenent psmt = con.prepareStatement(this.SELECT_SQL);
    psmt.setString(1,UserName);
    psmt.setString(2,PassWord);
  
    ResultSet rs = psmt.execute();
    while(rs.next()) {
     boolean = true;
    }
   }catch(Exception ex) {
    //Exception title
   }finally {
    return boolean;
   }
  }
}



  Action execute() / Servlet (doGet() or doPost()) Method:
import java.sql.*;
        import java.util.*;
public ActionForward/void execute() {
  //get values of JSP 
  String UserName = request.getParemeter("UserName");
  String PassWord = request.getParemeter("PassWord");
 
  //check 
  CheckLogin check = new CheckLogin();
  Boolean boolean = check.checkLogin(UserName,PassWord);
 
  if(boolean) {
   //success
  }else {
   //error
  }
}
A:但是基本的思路都是一样的啊:
1、验证输入的数据是否符合要求(用户名不空、密码不空等此类的)
2、连接数据库
3、按用户名查询密码,然后与界面输入的密码比对是否一致。(这个地方如果要是涉及到密码加密就麻烦点)
4、返回密码比对结果
原创粉丝点击