• Java 向SQL Server插入文件数据


    package sqlserver;
    import java.util.Date;
    import java.util.UUID;
    
    import java.text.SimpleDateFormat;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.PrintStream;
    import java.sql.*;
    
    public class sqlserver {
    static String uuid=null;
    //////////////////////////////////////////////////////
    public static void main(String[] args) {
    FileOutputStream bos = null;
    try {
    bos = new FileOutputStream("F:/output.txt");
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    System.setOut(new PrintStream(bos));
    System.out.println(insertData());
    //    getData();    
    }
    
    public static Connection MSSQLConnection(){
    String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; // 加载JDBC驱动
    String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=filesdata"; // 连接服务器和数据库test
    String userName = "sa"; // 默认用户名
    String userPwd = "sa"; // 密码
    Connection dbConn = null;
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    try {
    Class.forName(driverName);
    dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
    System.out.println(df.format(new Date())+" "+"数据库连接成功。"); // 如果连接成功
    return dbConn;    // 控制台输出Connection
    // Successful!
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }
    
    // read the file and insert into the video table;
    static String insertData() {
    int isFilesFound=0;
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date2 = new Date();
    Connection dbConn = null;
    dbConn=MSSQLConnection();
    //UUID uuid = UUID.randomUUID();
    String f_id = UUID.randomUUID().toString();//用来生成数据库的主键id非常不错..
    uuid=f_id;
    File file = new File("F:/工作文件/PSD.rar");
    System.out.println(df.format(new Date())+" "+"正在处理文件:"+file.getName()+" UUID:"+uuid);
    FileInputStream fis = null;
    try{
    fis = new FileInputStream(file);
    isFilesFound=1;
    } catch(FileNotFoundException e){
    System.out.println(df.format(new Date())+" "+"未找到文件。");
    
    }
    if(isFilesFound==1){
    try {
    System.out.println(df.format(new Date())+" "+"开始向数据库写入文件。");
    PreparedStatement ps = dbConn.prepareStatement("Insert into files (f_id,f_name,f_content,f_date) values (?,?,?,?)");
    ps.setString(1,f_id); 
    ps.setString(2,file.getName());
    ps.setBinaryStream(3,fis,(int)file.length());
    ps.setDate(4,new java.sql.Date(date2.getTime()));
    
    System.out.println(df.format(new Date())+" "+"正在写入..。"); 
    ps.executeUpdate(); 
    ps.close(); 
    try{ 
    fis.close(); 
    System.out.println(df.format(new Date())+" "+"文件已写入数据表且数据流已关闭。"); 
    }catch(IOException e){ 
    System.out.println(df.format(new Date())+" "+"数据流无法关闭。"); 
    } 
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    try {
    dbConn.close();
    System.out.println(df.format(new Date())+" "+"关闭数据库连接.");
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return df.format(new Date())+" 插入数据完成。"; 
    }
    
    // get the data file from database;
    static String getData(){
    Connection dbcon = null;
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    try{
    dbcon = MSSQLConnection();
    //OutputStream out = new FileOutputStream("d:/1.exe");
    Statement st = dbcon.createStatement();
    ResultSet rs = st.executeQuery("select * from files where f_id = 'f7453b56-92f2-4aa9-8781-6ca85ab3f0ce'");
    while(rs.next()){
    java.io.InputStream fi=rs.getBinaryStream("f_content");
    File file=new File("d:/1.zip");
    FileOutputStream fo = new FileOutputStream(file);
    BufferedOutputStream bo = new BufferedOutputStream(fo);
    byte[] buff = new byte[1024];
    System.out.println(df.format(new Date())+" "+"正在从数据库写入本地...");
    while((fi.read(buff))>0)
    {
    bo.write(buff);
    }
    System.out.println(df.format(new Date())+" "+"写入完毕.");
    bo.close();
    fo.close();
    fi.close();
    System.out.println(df.format(new Date())+" "+"关闭读写流.");
    }
    }catch(Exception ex){
    ex.printStackTrace();
    }finally{
    if (dbcon!=null){
    try{
    dbcon.close();
    System.out.println(df.format(new Date())+" "+"关闭数据库连接.");
    }catch(Exception ex){
    ex.printStackTrace();
    }
    }
    dbcon = null;
    }
    return null;
    
    }
    //////////////////////////////////////////////////////
    }
  • 相关阅读:
    Prometheus-node-exporter
    Prometheus基础
    普通函数与回调函数的区别
    HTML转义字符大全
    使用 Chrome DevTools 模拟缓慢的 3G 网络速度
    Chrome 浏览器如何修改 User-Agent
    服务器上的 Git
    Mac配置go环境变量
    Linux和Mac环境变量设置
    Cloudflare DNS设置中子域委派不成功的问题
  • 原文地址:https://www.cnblogs.com/Tiago/p/4862857.html
Copyright © 2020-2023  润新知