Thứ Bảy, 23 tháng 11, 2019

Lưu trữ hoặc lưu tệp / tài liệu trong cơ sở dữ liệu SQL Server bằng C #

Lưu trữ tệp trong SQL Server

https://shabdar.org/sql-server/121-store-or-save-files-in-sql-server-database-using-c.html
http://www.shabdar.org/c-sharp/83-connecting-to-mysql-database-using-c-and-net.html
http://www.shabdar.org/sql-server/105-store-save-images-in-sql-server.html



Giới thiệu

Mẫu này sẽ giải thích cho bạn cách bạn có thể lưu trữ tệp hoặc tài liệu trong cơ sở dữ liệu SQL Server. Nói chung, không nên lưu trữ tệp trong cơ sở dữ liệu vì nó có thể phát triển cơ sở dữ liệu nhanh chóng và có thể gây ra hiệu suất chậm hơn của cơ sở dữ liệu và máy chủ. Tốt nhất bạn nên sử dụng hệ thống tập tin để lưu trữ tập tin. Nhưng có thể có các kịch bản mà bạn có thể muốn lưu trữ các tệp trong cơ sở dữ liệu.
Lưu trữ tệp trong SQL Server
Tập tin mới

Cách lưu trữ tệp trong cơ sở dữ liệu SQL Server

Để lưu trữ một tệp trong máy chủ sql, bạn cần đọc dữ liệu tệp vào một mảng byte. Khi bạn có dữ liệu tệp trong mảng byte, bạn có thể dễ dàng lưu trữ dữ liệu tệp này trong máy chủ sql bằng các tham số sql. Mã sau giải thích cho bạn làm thế nào để làm điều này.
01.private void cmdSave_Click(object sender, EventArgs e)
02.{
03.try
04.{
05.//Read File Bytes into a byte array
06.byte[] FileData = ReadFile(txtFilePath.Text);
07. 
08.//Initialize SQL Server Connection
09.SqlConnection CN = new SqlConnection(txtConnectionString.Text);
10. 
11.//Set insert query
12.string qry = "insert into FilesStore (OriginalPath,FileData) values(@OriginalPath, @FileData)";
13. 
14.//Initialize SqlCommand object for insert.
15.SqlCommand SqlCom = new SqlCommand(qry, CN);
16. 
17.//We are passing Original File Path and file byte data as sql parameters.
18.SqlCom.Parameters.Add(new SqlParameter("@OriginalPath", (object)txtFilePath.Text));
19.SqlCom.Parameters.Add(new SqlParameter("@FileData", (object)FileData));
20. 
21.//Open connection and execute insert query.
22.CN.Open();
23.SqlCom.ExecuteNonQuery();
24.CN.Close();
25. 
26.//Close form and return to list or Files.
27.this.Close();
28.}
29.catch(Exception ex)
30.{
31.MessageBox.Show(ex.ToString());
32.}
33.}
Đoạn mã sau giải thích cách đọc dữ liệu tệp trong một mảng byte.
01.//Open file in to a filestream and read data in a byte array.
02.byte[] ReadFile(string sPath)
03.{
04.//Initialize byte array with a null value initially.
05.byte[] data = null;
06. 
07.//Use FileInfo object to get file size.
08.FileInfo fInfo = new FileInfo(sPath);
09.long numBytes = fInfo.Length;
10. 
11.//Open FileStream to read file
12.FileStream fStream = new FileStream(sPath, FileMode.Open, FileAccess.Read);
13. 
14.//Use BinaryReader to read file stream into byte array.
15.BinaryReader br = new BinaryReader(fStream);
16. 
17.//When you use BinaryReader, you need to supply number of bytes to read from file.
18.//In this case we want to read entire file. So supplying total number of bytes.
19.data = br.ReadBytes((int)numBytes);
20. 
21.//Close BinaryReader
22.br.Close();
23. 
24.//Close FileStream
25.fStream.Close();
26. 
27.return data;
28.}

Cách đọc byte dữ liệu tệp từ bảng SQL Server

Để đọc tệp từ SQL Server, trước tiên hãy chuẩn bị bộ dữ liệu sẽ chứa dữ liệu từ bảng SQL Server. Liên kết dữ liệu này với một điều khiển Gridview trên mẫu.
01.//Get table rows from sql server to be displayed in Datagrid.
02.void GetFilesFromDatabase()
03.{
04.try
05.{
06.//Initialize SQL Server connection.
07.SqlConnection CN = new SqlConnection(txtConnectionString.Text);
08. 
09.//Initialize SQL adapter.
10.SqlDataAdapter ADAP = new SqlDataAdapter("Select FileId,OriginalPath,FileData from FilesStore", CN);
11. 
12.//Initialize Dataset.
13.DS = new DataSet();
14. 
15.//Fill dataset with FilesStore table.
16.ADAP.Fill(DS, "FilesStore");
17. 
18.//Fill Grid with dataset.
19.dataGridView1.DataSource = DS.Tables["FilesStore"];
20.}
21.catch(Exception ex)
22.{
23.MessageBox.Show(ex.ToString());
24.}
25.}
Khi bạn có dữ liệu hình ảnh trong tập dữ liệu DS, hãy lấy dữ liệu tệp từ một mảng byte.
1.//Get File data from dataset row.
2.byte[] FileData = (byte[])DS.Tables["FilesStore"].Rows[SelectedRow]["FileData"];
Cuối cùng lưu dữ liệu mảng byte vào một tệp
1.//Write file data to selected file.
2.using (FileStream fs = new FileStream(FileName, FileMode.Create))
3.{
4.fs.Write(FileData, 0, FileData.Length);
5.fs.Close();
6.}

Cách tải xuống và chạy chương trình

  • Tải mẫu từ liên kết trên đầu trang. Trích xuất trong một thư mục.
  • Khôi phục cơ sở dữ liệu SQL Server từ thư mục con Cơ sở dữ liệu SQL.
  • Nếu bằng cách nào đó bạn không thể khôi phục cơ sở dữ liệu được cung cấp, bạn có thể tạo bảng cần thiết bằng cách sử dụng tập lệnh (SQLScript.txt) được cung cấp trong thư mục Cơ sở dữ liệu SQL.
  • Mở giải pháp và chạy nó. Thay đổi chuỗi kết nối cho cơ sở dữ liệu của bạn.
  • Nhấp vào nút Kết nối. Để thêm tệp mới vào cơ sở dữ liệu, nhấp vào nút Tệp mới . Nhấp vào nút Duyệt trong cửa sổ Tệp mới để chọn tệp. Sau đó bấm vào Save để lưu nó.

Yêu cầu

  • Visual Studio.Net 2008
  • .Net Framework 2.0
  • Cơ sở dữ liệu MS SQL Server (mọi phiên bản)

Run Script trong SQL Server .Sql


https://dothanhlong.org/mot-so-notes-ve-su-dung-sql-server/
https://daynhauhoc.com/t/khong-the-tao-table-sql-bang-code-c-mac-du-test-code-dung/95429
https://www.mssqltips.com/sqlservertip/4556/introduction-to-c-scripting-for-sql-server-dbas/
https://www.sqlservercentral.com/articles/run-sql-server-scripts-using-c





Run Script trong SQL Server

Script trong SQL Server bản chất là các file SQL, dùng để backup, restore, chia sẻ dữ liệu một cách nhanh chóng.
Bình thường để Run Script thì chỉ cần Ctrl + O để mở file
Tuy nhiên, trường hợp của mình lại bị lỗi @@
Do vậy mình Run Script theo cách chạy lệnh command line
sqlcmd -S DESKTOP-SIUNBTT -i t1.sql
Với DESKTOP-SIUNBTT là tên SQL Server của mình, bạn có thể nhập địa chỉ Ip hay cái gì mà bạn chọn khi cài SQL Server ở bước 11. Nếu bạn để mặc định thì thường nó sẽ là tên máy của bạn.
Nếu chạy mà báo không tìm thấy hay nhận diện được lệnh sqlcmd thì kiểm tra lại các biến môi trường của SQL Server đã được thêm vào chưa
Nếu chạy ok thì sẽ hiện như hình dưới. Nó hiện warning ko sao cả



Run Script SQL Server
Run Script SQL Server

Sau khi chạy xong thì vào kiểm tra Database thử
Lúc này ta sẽ thấy danh sách các bảng dữ liệu xuất hiện trong Database của mình

Thêm User  loại SQl Server Authetication cho SQL Server

Như lúc nãy phần đăng nhập vào SQL Server mình có đề cập là login dạng Windows Authentication. Vậy trường hợp cần thông số để login vào bằng thằng khác thì sao? Chẳng hạn không dùng SSMS mà dùng Adminer để quản lý Database trên Web hay kết nối SQL Server với các ứng dụng khác, với PHP,.. chẳng hạn.
A, thì lúc đó chúng ta cần account cho kiểu login truyền thống. Login kiểu truyền thống cần những gì:
  • Server Address
  • Port
  • Username
  • Password
Server Address với Port thì là những thứ mặc định có của SQL Server rồi, còn account login vào? Chúng ta sẽ cần tạo tài khoản dạng SQl Server Authetication.
Tài khoản SQl Server Authetication sẽ cho phép chúng ta đăng nhập bằng username và password trên bất kỳ máy nào, hệ thống nào trỏ đến SQL Server address được.
Trong SSMS chúng ta vô phần Security, rồi nhấp chuột phải chọn New Login
Security -> New Login
Điền các thông tin cần thiết và quan trọng nhất là chọn loại account là SQl Server Authetication như hình bên dưới
SQl Server Authetication
Trong thẻ User Mapping chúng ta sẽ map database cho user đó
Tạm thời đến đây. Giờ có việc phải đi rồi
Mai viết tiếp :v
… tobe continue
–soiqualang_chentreu–








mình đang kẹt vấn đề tạo table trong sql ngay bằng code c# , mình có tìm hiểu cách làm trên mạng thì cách của mình đúng , nhưng khi chạy code thì lại không hề thấy tạo ra bảng, rù có refresh rồi
ai biết lỗi, hãy mẹo chỉ mình vs
private static string duongdan = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\thuctap.net\quanlythuvien\quanlythuvien\db_quanlythuvien.mdf;Integrated Security=True";
        private static SqlConnection ketnoi()
        {
            return new SqlConnection(duongdan);
        }

 public static void themsuaxoa(string sql)
        {
            SqlConnection conn = ketnoi();
            conn.Open();
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.ExecuteNonQuery();
        }

               if (!string.IsNullOrEmpty(mode)) {
                    string sqlID = truyvan.laygiatri("select id from tb_taikhoan where mode=" + mode + "");
                    DateTime date = DateTime.Now;
                    string ngaytao = date.ToString("ddMMyyyy");
                    string TableName = "tb_save"+ngaytao + sqlID;
                    string sqlCheckNameTable = "SELECT COUNT(*) AS EXIST FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=N'"+TableName+"'";
                    string  check = truyvan.laygiatri(sqlCheckNameTable);
                    if (check == "0")
                    {

                        string createTable = "CREATE TABLE tb_test( id INT(11) NOT NULL, idsach INT(11) NOT NULL, id_member INT(11) NOT NULL, PRIMARY KEY(id) )";
                        truyvan.themsuaxoa(createTable);
                        //MessageBox.Show(""+TableName);
                       
                    }
                    else
                    {
                        MessageBox.Show("table đã có không thể tạo thêm");
                    }





  • created

    15d
  • last reply

    15d
  • 4

    replies

  • 68

    views

  • 2

    users

  • 7

    likes

  • 3



Bạn có chắc đoạn trong if này chạy?
Không có ngoại lệ nào quăng ra à???





Mình đã test rất nhiều lần về việc chạy if else vs câu lệnh tạo bảng rồi , nhưng khi kết hợp lại thì không ra kết quả





Sao bạn không chạy trực tiếp câu lệnh:

Nếu thực thi được thì có nghĩa là do đoạn trước đó không có kết quả mong muốn.
Mà bạn xem kết quả trong tập tin đó bằng gì thế? MSSQL Manager?





Mình làm trên sql tích hợp trong visual ,
Mình sửa dk lỗi rồi, trong này kiểu int ko cần nhập số lượng ký tự













Thứ Bảy, 26 tháng 10, 2019

HAS STOPPED WORKING VỚI 1 CLICK MỚI NHẤT

Một vấn nạn mà bất cứ ai dùng máy tính đều cảm thấy khó chịu là lỗi “has stop working”. Lỗi này thì có nhiều nguyên nhân, có thể do win thiếu hoặc mất file, do virut, do driver chưa đúng ….“Has stop working” gây không ít khó chịu cho người dùng. Hôm nay mình sẽ chia sẻ cho các bạn 1 số thủ thuật để khắc phục tình trạng này.
Ở đây tôi sẽ hướng dẫn các bạn 2 cách khắc phục mà tôi đã thực hiện thành công
Cách 1: Khắc phục bằng file Reg. Chạy file reg sau đó khởi động lại máy
Cách 2: Các bạn dùng các phần mềm diệt virus như Avast, KIS,… diệt và xóa các file bị nhiễm sau đó khởi động lại và sẽ hết lỗi


Khuyến khích các bạn sử dụng cách 1 để nhanh hơn. Nếu cách 1 không khắc phục được các bạn mới làm cách này. 
Link download:
- Link Google Drive: Download
Ngoài ra các bạn có thể tải các phần mềm hữu ích khác tại đây
Tham gia nhóm chia sẽ phần mềm trên facebookhttps://www.facebook.com/groups/255116492090650
Chúc các bạn thành công !