JDBC小结(附源码) 连接mysql 包含与ADO.net的操作对比及.net中的操作源码

这篇博客总结了JDBC连接MySQL的基本操作,并与ADO.NET进行了对比。内容包括加载SQL驱动、执行SQL语句和处理结果集。同时提供了经过测试的JDBC和ADO.NET数据库操作的源代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

谢了一个JDBC的小例子供大家分享,可以直接与mysql连接使用的。其实所有的数据库操作都是一样的,差不多都是一个套路,下面就肤浅地剖析下吧!

 

JDBC vs ADO.NET:

1.加载SQL DRIVER,获得连接CONNECTION。

   jdbc:

     Class.forName("");

     Connection conn=DriverManager.getConnection(url,username,pwd);

   ado.net

     SqlConnection conn = new SqlConnection("url,username,pwd")

2.执行SQL语句。

  jdbc:

    Statement对象,或PreparedStatement.

  ado.net

     sqlClient包中的相关类,如sqlDataAdapter、sqlCommand;

3.结果的保存。

  jdbc:

   ResultSet(理解为游标)

  ado.net

   DataSet(理解为本地脱离服务器的数据表集合)

下面则是以上两种形式的源代码,都经过测试,可以稍稍修改一下使用:

JDBC  MYSQL:

 

/*
 *Create on Jan 4, 2009
 *Copyright 2009 Quasar20063501.All Rights reserved
 *
 *weizhaozhe
 */
package wzz.dataOperations;

import java.sql.*;
/**
 * @author Quasar20063501
 * @since Jan 4, 2009
 * 这个类用来作为访问MYSQL中数据库的通用模板,可以再完成相关配置后直接使用!
 */
public class DataAccess {
 private String connURL="jdbc:mysql://localhost:3306/meetingssharing_db";
 private Connection conn=null;
 private Statement smt=null;
 private ResultSet rs=null;

 /**
  * 连接到数据库
  */
 public void connectToDatabase(){
  try{
   Class.forName("com.mysql.jdbc.Driver");                   
  }catch(ClassNotFoundException cnfe){
   System.err.println("The Driver for mysql is not found!/n");
   System.out.println("Please import the Driver of mysql!!!/n/n ");
      cnfe.printStackTrace();
  }
  
  try{
   conn=DriverManager.getConnection(connURL,"root","1988323");
  }catch(SQLException sqle){
   System.err.println("There is something wrong happened when conncecting to the database!/n");
   System.out.println("Please check the the database!/n/n");
   sqle.printStackTrace();
  }
 }
 
 /**
  * 通过statement对象执行查询操作
  * @param sql
  * @return
  */
 public ResultSet excuteQuery(String sql){
  try{
   smt=conn.createStatement();
   rs=smt.executeQuery(sql);
  }catch(SQLException sqle){
   System.err.println("There is something wrong happened when getting the statement!/n");
   sqle.printStackTrace();
  }
   /**
    * 调试过程中发现的小问题:
    *    if(rs==null){
    *  System.out.println("null!");
    * }else{
    *  System.out.println("not null!");
    * }   
       *    这段代码是不起作用的,并不能测试出ResultSet中是否有数据
       *    因为rs是一个游标性质的对象的引用,决不能用NULL来判断,正
       *    确写法应该是rs.next().用null判断时一定要谨慎思考啊!  
    */
  
  return rs;
  
 }
 
 /**
  * 通过statement对象执行更新操作
  * @param sql
  * @return
  */
 public int excuteNonQuery(String sql){
  int count=0;
  try{
   smt=conn.createStatement();
   count=smt.executeUpdate(sql);
  }catch(SQLException sqle){
   System.err.println("There is something wrong happened when getting the statement!/n");
   sqle.printStackTrace();
  }
  
  return count;
 }
 
 /**
  * 关闭数据库操作的相关资源
  */
 public void releaseSources(){
  try{
   if(conn!=null){
    conn.close();
   }
   if(smt!=null){
    smt.close();
   }
   if(rs!=null){
    rs.close();
   }
  }catch(SQLException sqle){
   System.err.println("The system can't close the related sources!/n/n");
   sqle.printStackTrace();
  }
 }
 
 
 
}

 

ADO.NET  SQLSERVER:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;


/// <summary>
/// CONN 的摘要说明
/// </summary>
public class CONN
{
 
  /// <summary>
    /// 连接数据库的字符串
    /// </summary>
    string connStr = "";

    #region 获得DataSet两个方法
    public DataSet getDataSet(string sql)
    {
        DataSet ds = new DataSet();
        connStr = ConfigurationManager.ConnectionStrings["stuDBConnectionString"].ConnectionString;
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            conn.Open();
            SqlDataAdapter adpt = new SqlDataAdapter(sql, conn);
            adpt.Fill(ds);
            conn.Close();
        }

        return ds;
    }

    public DataSet getDataSet(string sql,string tableName)
    {
        DataSet ds = new DataSet();
        connStr = ConfigurationManager.ConnectionStrings["stuDBConnectionString"].ConnectionString;
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            conn.Open();
            SqlDataAdapter adpt = new SqlDataAdapter(sql, conn);
            adpt.Fill(ds,tableName);
            conn.Close();
        }

        return ds;
    }
    #endregion

    #region 执行非查询的语句

    public int executeDML(string sql)
    {
        int rows=0;
        connStr = ConfigurationManager.ConnectionStrings["stuDBConnectionString"].ConnectionString;
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            conn.Open();
            SqlCommand cmd=new SqlCommand(sql,conn);
            rows=cmd.ExecuteNonQuery();
            conn.Close();
        }

        return rows;
    }
    #endregion

    #region 执行查询语句
    public SqlDataReader getDataReader(string sql)
    {
        SqlDataReader dr;
        connStr = ConfigurationManager.ConnectionStrings["stuDBConnectionString"].ConnectionString;
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            conn.Open();
            SqlCommand cmd=new SqlCommand(sql,conn);
            dr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
            conn.Close();
        }

        return dr;
    }

#endregion
 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值