sqlserver二进制存储

CREATE TABLE myTable_yq(Document varbinary(max),yq varchar(20))

--SELECT @xmlFileName = ‘c:\TestXml.xml‘

INSERT INTO myTable(Document)
SELECT * FROM
OPENROWSET(BULK N‘E:\20110330110932_61311.jpg‘, SINGLE_BLOB) AS XMLDATA

INSERT INTO myTable(Document)
SELECT * FROM
OPENROWSET(BULK N‘D:\newviewhigh\serializable.txt‘, SINGLE_BLOB) AS XMLDATA

select * from myTable

select * from myTable_yq

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.viewhigh.base.databaseconnection.entity.DatabaseConnection;
import com.viewhigh.base.databaseconnection.service.IDatabaseConnectionService;
import com.viewhigh.common.util.DBHelper;
import com.viewhigh.base.databaseconnection.service.impl.DatabaseConnectionServiceImpl;

public class InsertBlobTest {

	public void insert2zwdt(Connection conn) throws Exception{
		//IDatabaseConnectionService databaseConnectionService = new DatabaseConnectionServiceImpl();
		//DatabaseConnection targetDatabaseConnection = databaseConnectionService
		//		.getDatabaseConnectionById("40288a5a57d13f0b0157d140652e0003");

		//Connection conn = new DBHelper(targetDatabaseConnection)

    	//ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
       // oos.writeObject(user);
        ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

        //ObjectInputStream ins = new ObjectInputStream(oos); 

        byte[] bytes = bos.toByteArray();
    	InputStream bis = new ByteArrayInputStream(bytes);  

					//.getConnection();
		Statement stmt = conn.createStatement();
		 PreparedStatement pstmt= null;
			conn.setAutoCommit(false);// 取消自动提交

        //================================
        /*Connection conn = getConnection();
        conn.setAutoCommit(false); // 设置手动提交
        PreparedStatement pstmt=null; */
        File file=new File("D:\\newviewhigh\\serializable.txt");
        InputStream in = new FileInputStream(file);
          System.out.println("test---------------->");
        String sql="insert into myTable_yq(Document,yq) "
                + "values(?,?)";  

        pstmt=conn.prepareStatement(sql);
        pstmt.setBinaryStream(1, bis, file.length());
        pstmt.setString(2, "yangqing");

        pstmt.execute();
        conn.commit();
        pstmt.close();
    }  

	public static void main(String[] args){

		String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";

		  String dbURL="jdbc:sqlserver://localhost:1438;DatabaseName=ah_datai_yd";

		  String userName="sa";

		  String userPwd="sa";

		  try

		  {

		   Class.forName(driverName);

		   Connection dbConn=DriverManager.getConnection(dbURL,userName,userPwd);

		    System.out.println("连接数据库成功");

		    InsertBlobTest ib = new InsertBlobTest();

			try {
				ib.insert2zwdt(dbConn);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		  }

		  catch(Exception e)

		  {

		   e.printStackTrace();

		   System.out.print("连接失败");

		  }    

		 }

	}

  

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;

import com.viewhigh.base.databaseconnection.entity.DatabaseConnection;
import com.viewhigh.base.databaseconnection.service.IDatabaseConnectionService;
import com.viewhigh.common.util.DBHelper;
import com.viewhigh.base.databaseconnection.service.impl.DatabaseConnectionServiceImpl;

public class InsertBlob {

	//public void insert2zwdt(String xmlFileName, Long index) throws Exception{
	public void insert2zwdt(Connection conn) throws Exception{
		//IDatabaseConnectionService databaseConnectionService = new DatabaseConnectionServiceImpl();
		//DatabaseConnection targetDatabaseConnection = databaseConnectionService
		//		.getDatabaseConnectionById("40288a5a57d13f0b0157d140652e0003");

		//Connection conn = new DBHelper(targetDatabaseConnection)
					//.getConnection();
		Statement stmt = conn.createStatement();
		 PreparedStatement pstmt= null;
			conn.setAutoCommit(false);// 取消自动提交

        //================================
        /*Connection conn = getConnection();
        conn.setAutoCommit(false); // 设置手动提交
        PreparedStatement pstmt=null; */
        File file=new File("D:\\newviewhigh\\serializable.txt");
        InputStream in = new FileInputStream(file);
          System.out.println("test---------------->");
        String sql="insert into myTable_yq(Document,yq) "
                + "values(?,?)";  

        pstmt=conn.prepareStatement(sql);
        pstmt.setBinaryStream(1, in, file.length());
        pstmt.setString(2, "yangqing");
       /* pstmt.setInt(1, index.intValue());
        pstmt.setString(2, exData.getStSource());
        pstmt.setString(3, exData.getStKey());
        pstmt.setString(4, exData.getStVersion());
        pstmt.setString(5, exData.getStValue());
        pstmt.setString(6, exData.getStOp());
        pstmt.setString(7, exData.getStMemo());
        pstmt.setBinaryStream(8, in, file.length());
        pstmt.setString(9, exData.getStDest());  */

        pstmt.execute();
        conn.commit();
        pstmt.close();
    }  

	/*public void insert2own(ExData exData, String xmlFileName, Long index) throws Exception{
        File file=new File(xmlFileName);
        InputStream in = new FileInputStream(file);  

        DataSending dataSending = new DataSending();
        dataSending.setNmSeqId(index.intValue());
        dataSending.setStSource(exData.getStSource());
        dataSending.setStKey(exData.getStKey());
        dataSending.setStVersion(exData.getStVersion());
        dataSending.setStValue(exData.getStValue());
        dataSending.setStOp(exData.getStOp());
        dataSending.setStMemo(exData.getStMemo());
        dataSending.setSendDate(new Date());
        byte[] data=new byte[]{};
        data=inputStreamToByte(in);
        dataSending.setBlData(data);
        dataSending.setStDest(exData.getStDest());
        dataSendingDao.save(dataSending);  

    }  */

	/*private byte[] inputStreamToByte(InputStream in) throws IOException{
        ByteArrayOutputStream baos=new ByteArrayOutputStream();
        int ch;
        while((ch=in.read())!=-1){
            baos.write(ch);
        }
        byte[] data=baos.toByteArray();
        baos.close();
        return data;
    }  */

	public static void main(String[] args){

		/*InsertBlob ib = new InsertBlob();

		try {
			ib.insert2zwdt();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}*/

		String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";

		  String dbURL="jdbc:sqlserver://localhost:1438;DatabaseName=ah_datai_yd";

		  String userName="sa";

		  String userPwd="sa";

		  try

		  {

		   Class.forName(driverName);

		   Connection dbConn=DriverManager.getConnection(dbURL,userName,userPwd);

		    System.out.println("连接数据库成功");

		    InsertBlob ib = new InsertBlob();

			try {
				ib.insert2zwdt(dbConn);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		  }

		  catch(Exception e)

		  {

		   e.printStackTrace();

		   System.out.print("连接失败");

		  }    

		 }

	}

  

时间: 2024-10-20 22:03:03

sqlserver二进制存储的相关文章

【输出一个整数的二进制存储形式】

// 输出一个整数的二进制存储形式void putBinary(int n){ int bits = sizeof(n) * 8; while (bits-->0) { printf("%d", n>>bits&1); if (bits%4==0) printf(" "); } printf("\n");}

C/C++ 图像二进制存储与读取

本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50782792 在深度学习时,制作样本数据集时,须要产生和读取一些二进制图像的数据集,如MNIST,CIFAR-10等都提供了适合C语言的二进制版本号. 以CIFAR-10的数据集为例.官网上有两段关键的介绍: 二进制版本号数据集格式为(图像大小为32x32): <1 x label><3072 x pixel> ... &

Sqlserver数据库存储路径的修改

Sqlserver数据库存储路径的修改 Sqlserver数据库存储路径问题:本系统sqlserver路径默认是存储在C盘目录下的,由于数据会慢慢变大和避免重装系统数据丢失等问题,最好手动将路径设置在D盘. 更改路径方法: 情况一:更改数据库默认存储路径 1.打开数据库,登录进去,选择服务器 "属性". 2.选择"数据库设置",如图直接修改数据和日志的存储路径 这样新建数据库默认的存储路径就变为手动设置的路径了. 情况二:对已有的数据库转移到D盘 1.打开数据库,登

计算机内部整数的表示(二进制存储)

10.在16位机器上跑下列foo函数的结果是(B)(阿里2014笔试题)   void foo()   {       int i = 65536;       cout << i<<”,”;       i = 65535;       cout << i;   }   A.-1,65535   B.0,-1     C.-1,-1    D.0,65535 解析:16位机器的int型变量为16位 16位int的表示范围:-32768到32767 65535(十进制)

计算机中数字的二进制存储形式

今天,做个关于二进制的算法题,突然有个问题一直想不通为什么~5是6,计算机基础知识不过关啊,所以现在来弥补下,正数和负数在计算机中是怎么存储和计算的. 讲讲计算机中的存储形式: 计算机中存储的数都是以补码的方式存储的,而正数的原码,反码,补码都是一样的.但是负数的原码,反码,补码是不一样的. 下面都是以java中的int i=5为例. 正数5的原码就是其二进制码:00000000 00000000 00000000 00000101 反码是:00000000 00000000 00000000

float浮点数的二进制存储方式及转换

int和float都是4字节32位表示形式.为什么float的范围大于int? float精度为6-7位.1.66*10^10的数字结果并不是166 0000 0000 指数越大,误差越大. 这些问题,都是浮点数的存储方式造成的. float和double在存储方式上都是遵从IEEE的规范的,float遵从的是IEEE R32.24 ,而double 遵从的是R64.53. 无论是单精度还是双精度在存储中都分为三个部分: 符号位(Sign) : 0代表正,1代表为负 指数位(Exponent):

深入理解Sqlserver文件存储之页和应用 (转)

我们每天都在使用数据库,我们部门使用最多的关系数据库有Sqlserver,Oracle,有没有想过这些数据库是怎么存放到操作系统的文件中的?有时候为了能够设计出最优的表结构,写出高性能的Sqlserver脚本,处理海量数据并发,我们必须解底层原理.由于个人兴趣最近研究了下Sqlserver的文件存储,由于水平有限,下面只讲解Sqlserver的最小存储单元-页. 什么是页,区? 什么会有一个页的概念,我们知道对于操作系统来说,文件可以认为是一个很大 的线性空间,如果按地址空间顺序分配容量(也就是

sqlserver 数据存储

/* 测试数据存储 */ 准备工作 -- ============================================= -- 创建测试数据库 -- ============================================= create database test go -- ============================================= -- 创建测试表 -- ======================================

java实现文件转换成二进制存储与取出

一.功能描述: 将文件转成二进制数据放入数据库中,需要的时候,便可以取出安装与使用. 二.数据库: 建立一个数据库字段存放转成二进制的图片,这个字段有一个要求就是要设置成blob类型的 [sql] view plaincopy CREATE TABLE `save_image` ( `id` int(50) NOT NULL AUTO_INCREMENT, <span style="color:#FF0000;">`images` blob</span>, PR