⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sql.java

📁 这是一个连接数据库的类
💻 JAVA
字号:
import java.sql.*;
import java.io.*;
public class SQL
{
  private String strDBName; //数据库名字
  private String strServerName; //连接数据库的服务器名
  private String strUserName; //访问数据库用户
  private String strPassword; //连接数据库密码
  private int dbType=0;  //数据库类型
  private Statement stmt; //SQL命令语句
  private ResultSet rs; //管式数据集
  private CallableStatement cst;//储存过程接口
  private String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
  private String url;

  public SQL(String server,String db,String user,String pwd,int type)
  {
    strDBName=db;//数据库
	strServerName = server;//服务器
	strUserName = user;//用户名
	strPassword = pwd;//用户密码
	dbType = type;//连接类型
  }
   /*
    创建连接对象
     */
  public Connection connection()
  {
    switch(dbType)
    {
     case 0://0表示SQL Server2000数据库
       driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
       url="jdbc:microsoft:sqlserver://"+strServerName+":1433;DataBaseName="+strDBName+";User="+strUserName+";Password="+strPassword;
       break;
       case 1://表示Access数据库
         driver="sun.jdbc.odbc.JdbcOdbcDriver";
         url="jdbc:odbc:"+strServerName;
         break;
        default:
          driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
          url="jdbc:microsoft:sqlserver://"+strServerName+":1433;DataBaseName="+strDBName+";User="+strUserName+";Password="+strPassword;
       break;
    }
   try
   {
    Class.forName(driver);//建立桥接器
    Connection con=DriverManager.getConnection(url,strUserName,strPassword);//url是数据库的驱动(有sql和access之分)
    return con;
   }catch(ClassNotFoundException cnf)
   {
    System.out.println("driver not find:"+cnf);
    return null;
   }
   catch(SQLException sqle)
   {
    System.out.println("can't connection db:"+sqle);
    return null;
   }
   catch(Exception e)
   {
    System.out.println("Failed to load JDBC/ODBC driver.");
    return null;
   }
  }
      /*
    执行有影响行的数据库操作,主要是添加,修改,删除,
    如果成功返回大于0的整数,否则返回-1
    */
 public int sqlCommand(String cmd)
   {  Connection conn=connection(); //访问数据库的连接对象
     if (conn!=null)
     { 
		 try
       {
        stmt=conn.createStatement();//创建一个sql命令
        return stmt.executeUpdate(cmd);
     }
     catch (Exception ex)
     {ex.printStackTrace();
      return -1;
     }
		 finally
		 {
      try{
        stmt.close();
        conn.close();
      }catch (java.sql.SQLException ex1)
      {
		  ex1.printStackTrace();
	  }
      }
	 }
     else  //数据库连接失败
       return -1;


   }
   public int sp_sqlCommand(CallableStatement cs)  //带存储过程的命令
   {  //DatabaseMetaData dm=null;
     try {
     // if (dm.supportsStoredProcedures() == false)  return -1;  //判断是否支持存储过程

       return cs.executeUpdate();

    }
    catch (SQLException ex) {
      System.out.println(ex.toString());
      return -1;
    }
    catch(Exception ex1)
    {return 0;}
    finally
    {
     //cs.close();
    }

   }
   /*
    批量执行有影响行的数据库操作,主要是添加,修改,删除,
    如果成功返回1,否则返回-1
    */
   public int sqlCommand(String cmd[])
   { Connection conn=connection(); //访问数据库的连接对象
     if (conn==null)
       return 0;
     try {
       conn.setAutoCommit(false); //禁止自动提交,设置会滚点
       stmt = conn.createStatement();
       int i = 0;
       for (i = 0; i < cmd.length; i++) {
         stmt.execute(cmd[i]);
       }
       conn.commit();
       return 1;
     }
     catch (Exception ex) {
       ex.printStackTrace();
       try {
         conn.rollback();
         return -1;
       } catch (Exception e) {
         e.printStackTrace();
         return -1;
       }
     }finally {
       try {
         stmt.close();
         conn.close();
       }
       catch (java.sql.SQLException ex1) {
         ex1.printStackTrace();
       }

     }


   }
   /*
    根据指定命令获取数据库表中的数据,
    成功值返回在结果集中,否则返回在空对象
    */
 public ResultSet getData(String cmd)
 { Connection con=connection();
   if (con==null)
     return null;
   Statement sts=null;
   try {
     sts = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
     rs = sts.executeQuery(cmd);
     return rs;
   }catch(Exception ex)
   {
     return null;
   }finally {
       try {
         //sts.close();
        //con.close();
       }
       catch (Exception ex1) {
         ex1.printStackTrace();
       }

     }

   }
   public byte[] readFileToStream(String strPath) //读入指定文件,通过tmpByte转换为字节数组
   {
     try
     {
       File file=new File(strPath);
       FileInputStream st=new FileInputStream(file);
       byte[] buffer=new byte[st.available()];
       st.read(buffer);
       st.close();
       return buffer;
     }
     catch(Exception ex)
     {return null;}
      }
      public int restoreFile(String strCmd,String fileName,String fileType,String filePath,String fileField)
          //恢复数据库中的文件,期中FilePath为恢复制定路径,FileField表示存储文件的字段名
      {
       try
       {
        ResultSet rs;
        if (fileType.length()<=0) return 0; //文件扩展名不正确,无法还原
        rs=getData(strCmd);
        byte[] b;
        rs.next();
        b=rs.getBytes(fileField);
       if(b.length>0)
        {
         File file=new File(filePath+fileName+"."+fileType);
         FileOutputStream out=new FileOutputStream(file);
         out.write(b);
         out.close();
         return 1;
        }
        else
        {
        return 0;
        }
       }
       catch(Exception ex)
       {System.out.println(ex.toString());
         return -1;}
     }



}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -