Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Cách lưu hình trong CSDL?

  1. #1
    Ngày gia nhập
    01 2008
    Bài viết
    31

    Thumbs down Cách lưu hình trong CSDL?

    mình muốn thiết kế cái form, chọn lưu 1 hình nào đó vào CSDL từ đường dẫn bất kỳ fải làm sao các bạn?

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    TP.HCM
    Bài viết
    113

    Trích dẫn Nguyên bản được gửi bởi jetli88 Xem bài viết
    mình muốn thiết kế cái form, chọn lưu 1 hình nào đó vào CSDL từ đường dẫn bất kỳ fải làm sao các bạn?
    Hình ảnh là file binary chỉ cần lưu vào CSDL (SQL) với dạng binary là ok, cách khác thì có thể là dùng xử lý file (tìm hiểu System.IO) và đưa file vào một đường dẫn cố định rồi chỉ cần lưu đường dẫn cố định là được.

    Ở đây có đoạn code lấy từ MSDN, đoạn này khá là đầy đủ cho việc lưu hình ảnh vơi binary đó. (không rảnh để viết demo rỏ ràng hơn nên tạm xem ở MSDN vậy)
    PHP Code:
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.IO;

    public class 
    EmployeeData
    {
      public static 
    void Main()
      {
        
    DateTime hireDate DateTime.Parse("4/27/98");
        
    int newID  AddEmployee("Smith""John""Sales Representative"hireDate5"smith.bmp");
        
    Console.WriteLine("New Employee added. EmployeeID = " newID);
      }

      public static 
    int AddEmployee(string lastNamestring firstNamestring titleDateTime hireDate int reportsTostring photoFilePath)
      {
        
    SqlConnection connection = 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, 0x0);" +
          
    "SELECT @Identity = SCOPE_IDENTITY();" +
          
    "SELECT @Pointer = TEXTPTR(Photo) FROM Employees WHERE EmployeeID = @Identity"connection);

        
    addEmp.Parameters.Add("@LastName",  SqlDbType.NVarChar20).Value lastName;
        
    addEmp.Parameters.Add("@FirstName"SqlDbType.NVarChar10).Value firstName;
        
    addEmp.Parameters.Add("@Title",     SqlDbType.NVarChar30).Value title;
        
    addEmp.Parameters.Add("@HireDate",  SqlDbType.DateTime).Value hireDate;
        
    addEmp.Parameters.Add("@ReportsTo"SqlDbType.Int).Value reportsTo;

        
    SqlParameter idParm addEmp.Parameters.Add("@Identity"SqlDbType.Int);
        
    idParm.Direction ParameterDirection.Output;
        
    SqlParameter ptrParm addEmp.Parameters.Add("@Pointer"SqlDbType.Binary16);
        
    ptrParm.Direction ParameterDirection.Output;

        
    connection.Open();

        
    addEmp.ExecuteNonQuery();

        
    int newEmpID = (int)idParm.Value;

        
    StorePhoto(photoFilePath, (byte[])ptrParm.Valueconnection);

        
    connection.Close();

        return 
    newEmpID;
      }

      public static 
    void StorePhoto(string fileNamebyte[] pointer,  SqlConnection connection)
      {
        
    int bufferLen 128;  // The size of the "chunks" of the image.

        
    SqlCommand appendToPhoto = new SqlCommand("UPDATETEXT Employees.Photo @Pointer @Offset 0 @Bytes"connection);

        
    SqlParameter ptrParm  appendToPhoto.Parameters.Add("@Pointer"SqlDbType.Binary16);
        
    ptrParm.Value pointer;
        
    SqlParameter photoParm appendToPhoto.Parameters.Add("@Bytes"SqlDbType.ImagebufferLen);
        
    SqlParameter offsetParm appendToPhoto.Parameters.Add("@Offset"SqlDbType.Int);
        
    offsetParm.Value 0;

        
    //''''''''''''''''''''''''''''''''''
        // Read the image in and write it to the database 128 (bufferLen) bytes at a time.
        // Tune bufferLen for best performance. Larger values write faster, but
        // use more system resources.

        
    FileStream fs = new FileStream(fileNameFileMode.OpenFileAccess.Read);
        
    BinaryReader br = new BinaryReader(fs);

        
    byte[] buffer br.ReadBytes(bufferLen);
        
    int offset_ctr 0;

        while (
    buffer.Length 0)
        {
          
    photoParm.Value buffer;
          
    appendToPhoto.ExecuteNonQuery();
          
    offset_ctr += bufferLen;
          
    offsetParm.Value offset_ctr;
          
    buffer br.ReadBytes(bufferLen);
        }

        
    br.Close();
        
    fs.Close();
      }

    Đã được chỉnh sửa lần cuối bởi sunflower : 25-02-2008 lúc 01:18 AM. Lý do: Thêm code

    Gác Kiếm

  3. #3
    Ngày gia nhập
    01 2008
    Bài viết
    31

    chưa test nhưng cám ơn sunflower nhìu~~~mình khoái khi load CSDL lên form có hình lắm!

Các đề tài tương tự

  1. Load Image trong file word(đã chuyển thành binary trong csdl) lên trình duyệt
    Gửi bởi Mr.BiBi trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 3
    Bài viết cuối: 05-12-2013, 08:45 AM
  2. Database Khi chọn Item trong combobox thì select dữ liệu tương ứng trong csdl vào textbox
    Gửi bởi bluesky30121992 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 08-12-2012, 09:15 PM
  3. ADO.NET Từ giá trị bool trong CSDL chuyển thành tên trong DataGridViewTextColumn
    Gửi bởi tamthientai trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 28-12-2011, 10:31 PM
  4. Đăng nhập trong C#: Kiểm tra Pass rỗng trong CSDL
    Gửi bởi hvcuongit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 10-04-2009, 04:18 PM
  5. chuyển CSDL SQL2005 sang CSDL SQL2000
    Gửi bởi nthung trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 1
    Bài viết cuối: 08-04-2009, 02:45 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn