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; }
//////////////////////////////////////////////////////
}
Java 向SQL Server插入文件数据的更多相关文章
- SQL Server插入中文数据出现乱码问题
我在用sql server存储数据的时候发现中文全变成了问号,我知道中文是特殊的编码.所以在数据库设计的时候包含中文的字段就是nvarchar,但是还是成了问号 好了,不多说了,解决方案如下: 在存储 ...
- SQL Server插入中文数据后出现乱码
今天在做项目的过程中遇到如标题的问题,情况如下图: 数据库使用的是SQL Server2012版本,创建表的脚本如下: CREATE TABLE [dbo].[Type]( [TypeId] INT ...
- sql server 2005 大数据量插入性能对比
sql server 2005大数据量的插入操作 第一,写个存储过程,传入参数,存储过程里面是insert操作, 第二,用System.Data.SqlClient.SqlBulkCopy实例方法, ...
- sql server 与oracle数据互导的一种思路--sql server链接服务器
思路:通过在sql server数据库中添加链接服务器,可以远程查询oracle数据库的表环境准备,安装sql server数据库,并安装好oracle驱动,在配置好tnsname文件中配置好orac ...
- SQL Server :理解数据页结构
原文:SQL Server :理解数据页结构 我们都很清楚SQL Server用8KB 的页来存储数据,并且在SQL Server里磁盘 I/O 操作在页级执行.也就是说,SQL Server 读取或 ...
- 01. SQL Server 如何读写数据
原文:01. SQL Server 如何读写数据 一. 数据读写流程简要SQL Server作为一个关系型数据库,自然也维持了事务的ACID特性,数据库的读写冲突由事务隔离级别控制.无论有没有显示开启 ...
- SQL Server 如何读写数据
01. SQL Server 如何读写数据 一. 数据读写流程简要SQL Server作为一个关系型数据库,自然也维持了事务的ACID特性,数据库的读写冲突由事务隔离级别控制.无论有没有显示开启事 ...
- SQL Server数据库文件与文件组总结
文件和文件组概念 关于文件与文件组,简单概括如下,详情请参考官方文档"数据库文件和文件组Database Files and Filegroups"或更多相关资料: 数据文件概念: ...
- Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决
Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决 I. 概述 1.1 JDBC概念 JDBC(Java Database Connectivity ...
随机推荐
- javascript根据元素自定义属性获取元素,操作元素
写在前面:给某个或多个元素自定义属性data-tar,想获取data-tar='123'的元素来进行进一步的操作,如何实现? function getElementByAttr(tag,attr,va ...
- JavaScript HTML DOM 元素(节点)
添加和删除节点(HTML 元素) 创建新的 HTML 元素 如需向 HTML DOM 添加新元素,您必须首先创建该元素(元素节点),然后向一个已存在的元素追加该元素. 例如:这段代码创建新的 < ...
- SDN基础
http://www.h3c.com.cn/Solution/Smart_Network/SDN/ http://network.51cto.com/network/content2013/SDNke ...
- C# 三角形外心和外接圆半径计算方法
在网上找了好久,想找一个现成的方法来用,折腾半天发现没有一个好用的,最后迫不得已自己写了一个,需要的同学可以直接拿去用, private void GetTriangleExcenterRadius( ...
- log4j基本使用方法
通过配置文件可知,我们需要配置3个方面的内容: 1.根目录(级别和目的地) 2.目的地(控制台和文件等) 3.输出样式 Log4j由三个重要的组件构成: 1.日志信息的优先级 日志信息的优先级从高到低 ...
- Openjudge-NOI题库-蛇形填充数组
题目描述 Description 用数字1,2,3,4,...,n*n这n2个数蛇形填充规模为n*n的方阵. 蛇形填充方法为: 对于每一条左下-右上的斜线,从左上到右下依次编号1,2,...,2n-1 ...
- 2016 ACM/ICPC Asia Regional Qingdao Online
吐槽: 群O的不是很舒服 不知道自己应该干嘛 怎样才能在团队中充分发挥自己价值 一点都不想写题 理想中的情况是想题丢给别人写 但明显滞后 一道题拖沓很久 中途出岔子又返回来搞 最放心的是微软微软妹可以 ...
- mysql连接失败或出现“Too many connections”错误
mysql连接失败或出现"Too many connections"错误 # 按自己服务器的配置文件路径修改 vi /etc/my.cnf 查找:max_connections 修 ...
- CodeForces 681D Gifts by the List
$dfs$,后续遍历. 如果某个节点$a[i]=i$,那么$i$的后继的$a[i]$都要指向$i$,直到出现新的后继$j$,$a[j]=j$.利用这个可以判断是否有解. 如果有解的话,那么只要输出后序 ...
- Qt 外观之一 ——Qt Style Sheet
Qt Style Sheet 目录 使用 对于应用程序 创建自定义控件 QSS语法 一般选择器(selector) 伪选择器 解决冲突 使用specificity Namespace冲突 级联效应 设 ...