数据库连接如何实现

推荐 生活 2019-09-25 05:32:43 5729

本文收集整理关于数据库连接如何实现的相关议题,使用内容导航快速到达。

内容导航:

  • Q1:如何实现java与数据库的连接
  • Q2:如何实现SQL数据库连接
  • Q3:Java中如何实现与后台数据库的连接?
  • Q4:JAVA如何连接数据库
  • Q1:如何实现java与数据库的连接

    JDBC连接数据库
    ??创建一个以JDBC连接数据库的程序,包含7个步骤:
    1、加载JDBC驱动程序:
    在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
    这通过java.lang.Class类的静态方法forName(StringclassName)实现。
    例如:
    try{
    //加载MySql的驱动类
    Class.forName("com.mysql.jdbc.Driver") ;
    }catch(ClassNotFoundException e){
    System.out.println("找不到驱动程序类 ,加载驱动失败!");
    e.printStackTrace() ;
    }
    成功加载后,会将Driver类的实例注册到DriverManager类中。
    2、提供JDBC连接的URL
    ??连接URL定义了连接数据库时的协议、子协议、数据源标识。
    ??书写形式:协议:子协议:数据源标识
    协议:在JDBC中总是以jdbc开始
    子协议:是桥连接的驱动程序或是数据库管理系统名称。
    数据源标识:标记找到数据库来源的地址与连接端口。
    例如:(MySql的连接URL)
    jdbc:mysql:
    //localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
    useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
    gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
    3、创建数据库的连接
    ??要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,
    该对象就代表一个数据库的连接。
    ??使用DriverManager的getConnectin(String url , String username ,
    String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和
    密码来获得。
    例如:
    //连接MySql数据库,用户名和密码都是root
    String url = "jdbc:mysql://localhost:3306/test" ;
    String username = "root" ;
    String password = "root" ;
    try{
    Connection con =
    DriverManager.getConnection(url , username , password ) ;
    }catch(SQLException se){
    System.out.println("数据库连接失败!");
    se.printStackTrace() ;
    }
    4、创建一个Statement
    ??要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3、种类型:
    1、执行静态SQL语句。通常通过Statement实例实现。
    2、执行动态SQL语句。通常通过PreparedStatement实例实现。
    3、执行数据库存储过程。通常通过CallableStatement实例实现。
    具体的实现方式:
    Statement stmt = con.createStatement() ;
    PreparedStatement pstmt = con.prepareStatement(sql) ;
    CallableStatement cstmt =
    con.prepareCall("{CALL demoSp(? , ?)}") ;
    5、执行SQL语句
    Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate
    和execute
    1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句
    ,返回一个结果集(ResultSet)对象。
    2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或
    DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
    3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的
    语句。
    具体实现的代码:
    ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
    int rows = stmt.executeUpdate("INSERT INTO ...") ;
    boolean flag = stmt.execute(String sql) ;
    6、处理结果
    两种情况:
    1、执行更新返回的是本次操作影响到的记录数。
    2、执行查询返回的结果是一个ResultSet对象。
    ?? ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些
    行中数据的访问。
    ?? 使用结果集(ResultSet)对象的访问方法获取数据:
    while(rs.next()){
    String name = rs.getString("name") ;
    String pass = rs.getString(1) ; // 此方法比较高效
    }
    (列是从左到右编号的,并且从列1开始)
    7、关闭JDBC对象
    操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
    明顺序相反:
    1、关闭记录集
    2、关闭声明
    3、关闭连接对象
    if(rs != null){// 关闭记录集
    try{
    rs.close() ;
    }catch(SQLException e){
    e.printStackTrace() ;
    }
    }
    if(stmt != null){// 关闭声明
    try{
    stmt.close() ;
    }catch(SQLException e){
    e.printStackTrace() ;
    }
    }
    if(conn != null){// 关闭连接对象
    try{
    conn.close() ;
    }catch(SQLException e){
    e.printStackTrace() ;
    }
    }

    Q2:如何实现SQL数据库连接

    定义连接字符串。Data Source=服务器;Initial Catalog=数据库名;User ID=用户名;Pwd=密码如:Data Source=IDEA-PC\SQLEXPRESS;Initial Catalog=student;User ID=sa;
    2、创建Connection对象。 SqlConnection sqlconnection1=new SqlConnection(constring);
    constring为连接字符串。
    3、打开与数据库的链接。 Sqlconnection1.Open();
    4、这时数据库就连接成功,可以操作数据库了。

    Q3:Java中如何实现与后台数据库的连接?

    用JAVA连接数据库主要有两种方式,一是用JDBC-ODBC桥来连接,二是用相关厂商提供的相应驱动程序来连接,首先谈谈第一种连接。
    JDBC-ODBC桥接器是用JdbcOdbc.Class和一个用于访问ODBC驱动程序的本地库实现的。对于WINDOWS平台,该本地库是一个动态连接库DLL(JDBCODBC.DLL)。
    由于JDBC在设计上与ODBC很接近。在内部,这个驱动程序把JDBC的方法映射到ODBC调用上,这样,JDBC就可以和任何可用的ODBC驱动程序进行交互了。这种桥接器的优点是,它使JDBC目前有能力访问几乎所有的数据库。通行方式如图所示:
    应用程序---JDBC API---JDBC-ODBC---ODBC API---ODBC层---数据源
    具体操作方法为:
    首先打开控制面板的管理工具,打开数据源(ODBC),在用户DSN里面添加数据源(即你要连接的数据库的名字),在这里假定连接SQL SERVER 2000的GoodsSupply数据库。名称填写你要连接的数据库的名称(GoodsSupply),然后逐步设置,如果选用了使用SQL-SERVER密码认证的话,就要输入相应的用户名及密码连接到数据库。一路下一步设置完成。
    在JAVA里面编写程序进行测试,在这里我的程序是让用户输入任意的表名与与列名,把该列的所有数据输出。源代码如下:
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.sql.*;
    public class ODBCBridge {
    public static void main(String[] args) {
    String url="jdbc:odbc:GoodsSupply";
    Statement sm=null;
    String command=null;
    ResultSet rs=null;
    String tableName=null;
    String cName=null;
    String result=null;
    BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
    try {
    try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动
    }catch(ClassNotFoundException e){
    System.out.println("Can not load Jdbc-Odbc Bridge Driver");
    System.err.print("ClassNotFoundException:");
    System.err.println(e.getMessage());
    }
    Connection con=DriverManager.getConnection(url,"USER","PASSWORD"); //使用SQL-SERVER2000认证
    DatabaseMetaData dmd=con.getMetaData(); //DMD为连接的相应情况
    System.out.println("连接的数据库:"+dmd.getURL());
    System.out.println("驱动程序:"+dmd.getDriverName());
    sm=con.createStatement();
    System.out.println("输入表名");
    tableName=input.readLine();
    while(true) {
    System.out.println("输入列名(为空时程序结束):");
    cName=input.readLine();
    if(cName.equalsIgnoreCase(""))
    break;
    command="select "+cName+" from "+tableName;
    rs=sm.executeQuery(command); //执行查询
    if(!rs.next())
    System.out.println("表名或列名输入有误");
    else {
    System.out.println("查询结果为:");
    do
    {
    result=rs.getString(cName);
    //数据库语言设置为中文,不用转换编码
    //result=new String(result.getBytes("ISO-8859-1"),"GB2312");
    System.out.println(result);
    }while(rs.next());
    }
    }
    }catch(SQLException ex) {
    System.out.println("SQLException:");
    while(ex!=null) {
    System.out.println("Message:"+ex.getMessage());
    ex=ex.getNextException();
    }
    }catch(Exception e) {
    System.out.println("IOException");
    }
    }
    }

    Q4:JAVA如何连接数据库

    java连接数据库的代码 位于MVC中的M(模型层)中,主要负责与数据库打交道。
    本人把我以前写的代码 加上注释 给你看看 希望对你有帮助。
    public class UserInfoDAO {
    //验证登陆名/密码sql语句
    //private -----这个sql语句只在本类内部使用,没有必要public
    //static-----sql语句仅仅一份就足够了
    //final-----sql语句一般在运行时不变,final修饰的变量相当于常量
    //常量名所有字母大写
    private static final String SQL_CHECK_USERINFO =
    "SELECT LOGINNAME,USERNAME,PASSWORD,AGE,ADDRESS FROM USERINFO WHERE LOGINNAME=? AND PASSWORD = ?";
    public UserInfoDAO() {
    }
    /**
    * 验证登陆名/密码方法
    * @param u UserInfo
    * @return boolean
    */
    public boolean checkUser(UserInfo u) {
    boolean b = false;//验证是否成功的标识
    Connection conn = null;//数据库连接的引用
    PreparedStatement pstmt = null;//PreparedStatement引用
    ResultSet rs = null;//结果集引用
    //调用ConnectionManager的方法,得到数据库里连接实例
    conn = ConnectionManager.getConnection();
    try {
    //通过Connection的prepareStatement()方法构建PreparedStatement实例,参数为sql语句
    pstmt = conn.prepareStatement(SQL_CHECK_USERINFO);
    //为sql语句中的?赋值,注意序号从1开始
    pstmt.setString(1, u.getLoginName());
    pstmt.setString(2, u.getPassword());
    //执行查询得到结果集
    rs = pstmt.executeQuery();
    //在结果集中循环,如果结果集中有记录意味着验证成功
    b = rs.next();//标识置为true
    while (rs.next()) {
    b = true;//标识置为true
    }
    } catch (SQLException ex) {
    System.out.println(ex.getMessage());
    } finally {
    //注意:一定在finally中释放数据库资源
    cleanUP(rs, pstmt, conn);
    }
    return b;
    }
    private void cleanUP(ResultSet rs, PreparedStatement pstmt, Connection conn) {
    try {
    if (rs != null) {
    rs.close();
    }
    if (pstmt != null) {
    pstmt.close();
    }
    if (conn != null) {
    conn.close();
    }
    } catch (SQLException ex) {
    System.out.println(ex.getMessage());
    }
    }
    }

    相关文章
    怎么建立简单的数据库2019-01-12
    sql脚本怎么导入数据库2019-01-24
    oracle如何备份数据库2019-01-30
    sql2008附加数据库出错2019-01-31
    查看oracle 数据库时间2019-02-01
    sql文件怎么导入数据库2019-02-03
    sql2000附加数据库怎么2019-02-03
    微信小程序开发 数据库2019-02-04
    oracle怎么创建数据库2019-02-06
    如何用excel建立数据库2019-02-10