|
¾È³çÇϼ¼¿ä
´äº¯ÀÌ µÉ±î ¸ð¸£°Ú½À´Ï´Ù. ^^
vs2003¿¡¼ blobÀ¸·Î °Ë»öÇß½À´Ï´Ù.
-blob°ª °¡Á®¿À±â
SqlConnection pubsConn = new SqlConnection("Data Source=localhost;Integrated
Security=SSPI;Initial Catalog=pubs;");
SqlCommand logoCMD = new SqlCommand("SELECT pub_id, logo FROM pub_info",
pubsConn);
FileStream fs; //
Writes the BLOB to a file (*.bmp).
BinaryWriter bw; //
Streams the BLOB to the FileStream object.
int bufferSize = 100; //
Size of the BLOB buffer.
byte[] outbyte = new byte[bufferSize]; // The BLOB byte[] buffer to
be filled by GetBytes.
long retval; //
The bytes returned from GetBytes.
long startIndex = 0; //
The starting position in the BLOB output.
string pub_id = ""; //
The publisher id to use in the file name.
// Open the connection and read data into the DataReader.
pubsConn.Open();
SqlDataReader myReader = logoCMD.ExecuteReader(CommandBehavior.SequentialAccess);
while (myReader.Read())
{
// Get the publisher id, which must occur before getting the
logo.
pub_id = myReader.GetString(0);
// Create a file to hold the output.
fs = new FileStream("logo" + pub_id + ".bmp",
FileMode.OpenOrCreate, FileAccess.Write);
bw = new BinaryWriter(fs);
// Reset the starting byte for the new BLOB.
startIndex = 0;
// Read the bytes into outbyte[] and retain the number of bytes
returned.
retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);
// Continue reading and writing while there are bytes beyond
the size of the buffer.
while (retval == bufferSize)
{
bw.Write(outbyte);
bw.Flush();
// Reposition the start index to the end of the last
buffer and fill the buffer.
startIndex += bufferSize;
retval = myReader.GetBytes(1, startIndex, outbyte,
0, bufferSize);
}
// Write the remaining buffer.
bw.Write(outbyte, 0, (int)retval - 1);
bw.Flush();
// Close the output file.
bw.Close();
fs.Close();
}
// Close the reader and the connection.
myReader.Close();
pubsConn.Close();
- blob °ª ¾²±â
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
public class EmployeeData
{
public static void Main()
{
DateTime hireDate = DateTime.Parse("5/21/99");
AddEmployee("Jones", "Mary",
"Sales Representative", hireDate, 5, "jones.bmp");
}
public static void AddEmployee(string lastName, string firstName,
string title, DateTime hireDate , int reportsTo, string photoFilePath)
{
byte[] photo = GetPhoto(photoFilePath);
SqlConnection nwindConn = new SqlConnection("Data
Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;");
SqlCommand addEmp = new SqlCommand("INSERT INTO
Employees (LastName, FirstName, Title, HireDate, ReportsTo, Photo) " +
"Values(@LastName,
@FirstName, @Title, @HireDate, @ReportsTo, @Photo)", nwindConn);
addEmp.Parameters.Add("@LastName", SqlDbType.NVarChar,
20).Value = lastName;
addEmp.Parameters.Add("@FirstName", SqlDbType.NVarChar,
10).Value = firstName;
addEmp.Parameters.Add("@Title", SqlDbType.NVarChar,
30).Value = title;
addEmp.Parameters.Add("@HireDate", SqlDbType.DateTime).Value
= hireDate;
addEmp.Parameters.Add("@ReportsTo", SqlDbType.Int).Value
= reportsTo;
addEmp.Parameters.Add("@Photo", SqlDbType.Image,
photo.Length).Value = photo;
nwindConn.Open();
addEmp.ExecuteNonQuery();
nwindConn.Close();
}
public static byte[] GetPhoto(string filePath)
{
FileStream fs = new FileStream(filePath, FileMode.Open,
FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] photo = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
return photo;
}
}
|