Showing posts with label Database. Show all posts
Sửa lỗi tạo Diagram trong MS SQL Server Management studio
Nội dung lỗi:
Attempted to read or write protected memory. This is often an indication that other memory is corrupt. (Microsoft.VisualStudio.OLE.Interop).
Sửa:
Tải về: https://goo.gl/RVWU8a (700KB)
Trong tệp nén có 2 thư mục (MSDesigners8, Visual Database Tools) các bạn paste vào
C:\Program Files (x86)\Common Files\Microsoft Shared (ghi đè luôn)
hoặc C:\Program Files\Common Files\Microsoft Shared là được.
Nếu vẫn không được thì copy 2 thư mục này trên một máy không bị lỗi và paste vào.
Attempted to read or write protected memory. This is often an indication that other memory is corrupt. (Microsoft.VisualStudio.OLE.Interop).
Sửa:
Tải về: https://goo.gl/RVWU8a (700KB)
Trong tệp nén có 2 thư mục (MSDesigners8, Visual Database Tools) các bạn paste vào
C:\Program Files (x86)\Common Files\Microsoft Shared (ghi đè luôn)
hoặc C:\Program Files\Common Files\Microsoft Shared là được.
Nếu vẫn không được thì copy 2 thư mục này trên một máy không bị lỗi và paste vào.
Các yêu cầu đóng gói phần mềm (có hoặc không có cơ sở dữ liệu)
thuvienwinform - Sau khi hoàn thành phần mềm thì công việc cuối cùng là đóng gói và triển khai cài đặt trên các máy tính để tiến hành sử dụng. Thế mà sau khi cài đặt chương trình không hoạt động mới đau chứ! Nguyên nhân chắc hẳn chưa đảm bảo các yêu cầu khi đóng gói để cài đặt trên máy khác, vậy cần những yêu cầu gì? Cần làm những gì để thỏa mãn các yêu cầu đó? Hãy cùng thuvienwinform giải quyết trong bài viết này.
Yêu cầu 1: Máy được cài phải đảm bảo các nền tảng cho chương trình hoạt động
Các nền tảng ở đây là phiên bản .NET dùng để viết phần mềm, ngoải ra còn các nền tảng thường được sử dụng như MS SQL (LocalDB, MS SQL Server,...), MS Office (nếu dụng CSDL Acess), DirectX, Microsoft Visual C++,...Máy cài muốn chạy được phần mềm thì phải được cài các nền tảng mà phần mềm sử dụng.
Để xem project được viết trên nền tảng .NET nào chọn Project -> [Tên project] Properties... (dòng cuối)
Cách 1
Cách 2
Ấn Applicaiton sẽ thấy phiên bản .NET của project (mục Target framwork)
Chú ý: Win XP không cài được phiên bản .NET 4.5 nên nếu muốn chạy trên win xp thì chọn .NET Framework 4 hoặc .NET Framework 4 Client Profile
Đường dẫn tải các phiên bản .NET: https://www.dropbox.com/s/h65eiyu449eh2rp/LinkTai.txt?dl=0
Để cài các nền tảng một cách tự động có thể sử dụng phần mềm đóng gói Advance Instaler (nếu cần hướng dẫn sử dụng các bạn bình luận phía dưới nha...vì trên mạng cũng nhiều bài hướng dẫn phần mềm này) nhưng khi thêm các trình cài các nền tảng này vào thì tệp cài đặt cũng sẽ rất nặng!
Yêu cầu 2: Đảm bảo đủ các thư viện cho chương trình hoạt động
Để đảm bảo một chương trình .NET hoạt động thì cần cung cấp đủ cho nó các thư viện. Cụ thể ở đây là các tệp .dll. Vậy làm sao để biết chương trình chúng ta cần những thư viện nào?
Trong tab Solution
mở thư mục References ra -> chọn các thư viện cần thiết -> Properties -> đặt copy local = true
Nếu bạn không xác định được là cần copy những thư viện nào thì CHỌN TẤT cho an toàn (dù sẽ làm chương trình nặng hơn đôi chút =]])
Sau khi Build thì các thư viện sẽ được copy vào Bin
Yêu cầu 3: Nếu sử dụng đến CSDL thì cần tạo chuỗi kết nối đúng đến CSDL
Vấn đề sẽ xuất hiện khi bạn cài trên máy khác -> làm đường dẫn đến tệp CSDL bị thay đổi so với trên máy code -> cần điểu chỉnh lại để kết nối đến được với tệp CSDL.
Ví dụ với việc dử dụng LocalDB
ADO.NET:
string duongDan = System.IO.Directory.GetCurrentDirectory() + "\\tentep.mdf;"; string chuoiKetNoi = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=" + duongDan + "Integrated Security=True;Connect Timeout=30"; System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(chuoiKetNoi);
LINQ To SQL:
string duongDan = System.IO.Directory.GetCurrentDirectory() + "\\tentep.mdf;"; string chuoiKetNoi = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=" + duongDan + "Integrated Security=True;Connect Timeout=30"; DataContext db = new DataContext(chuoiKetNoi);
Chú ý: @
Tạm kết: chắc hẳn 3 yêu cầu này chưa thể thỏa được mọi trường hợp nhưng là 3 yêu cầu cơ bản để một phần mềm chạy được trên một máy tính.
Hãy sống thật vui và đóng gói phần mềm thật nhiều các bạn nhé:))
Lỗi "operation is not valid due to the current state of the object"
thuvienwinform - Thật là khó chịu, mất hẳn một ngày mới khắc phục được!
- Trường hợp phát sinh lỗi:
+ Winform
+ LINQ to SQL
+ Devexpress GridControl 14.1
- Nguyên nhân: thuộc tính HasLoadedOrAssignedValue (của struct System.Data.Linq.EntityRef) luôn trả về true -> thực hiện xử lý ngoại lệ System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException() trong đoạn:
HasLoadedOrAssignedValue kiểm tra xem bảng chứa khóa ngoại đã có giá trị hay chưa! (chắc vậy). Oái oăm thay cái GridControl nó tự thực hiện việc này nên phải tắt nó đi!
- Khắc phục:
Chỉnh thuộc tính EnableEdit của Gridview trong GridControl về fale
Hoặc
- Trường hợp phát sinh lỗi:
+ Winform
+ LINQ to SQL
+ Devexpress GridControl 14.1
- Nguyên nhân: thuộc tính HasLoadedOrAssignedValue (của struct System.Data.Linq.EntityRef) luôn trả về true -> thực hiện xử lý ngoại lệ System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException() trong đoạn:
if (this._BangChuaKhoaNgoai.HasLoadedOrAssignedValue) { throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException(); }
HasLoadedOrAssignedValue kiểm tra xem bảng chứa khóa ngoại đã có giá trị hay chưa! (chắc vậy). Oái oăm thay cái GridControl nó tự thực hiện việc này nên phải tắt nó đi!
- Khắc phục:
Chỉnh thuộc tính EnableEdit của Gridview trong GridControl về fale
Hoặc
Tham khảo thêm:
LINQ to Sqlite, LINQ to MySQL, LINQ to Oracle
thuvienwinform - SQLite mà mình thấy nó quá tuyệt với rồi! Bây giờ lại phát hiện ra bộ kết nối giữa C# với SQLite bằng LINQ nữa, tốc độ code phải tăng gấp 10 lần mất, không tù tội như hồi trước xài ADO.NET nũa (nói thế hơi quá nhưng ADO.NET phải chạy mới biết lỗi). Nó chính là bộ LinqConnect. Các bạn có thể tải về bản đầy đủ tất cả LINQ to X với X = {SQLite, MySQL, Oracle,...} :D. Việc sử dụng tương tự như LINQ to SQL, cũng kéo thả, sinh code tự động.
Tải về (44MB):
- Dropbox: https://www.dropbox.com/s/bo88kvu7b6s2w8a/linqconnectfree.exe
- MediaFire: http://www.mediafire.com/download/2sjr3jxegugb1t1/linqconnectfree.exe
Trước khi cài thoát Visual Studio ra nha. Sau khi cài xong thì add item nó sẽ có cái này:
Tạo CSDL bằng SQLite: http://thuvienwinform.blogspot.com/2013/10/SQLite-chay-ung-dung-su-dung-da-tabase-tren-may-khong-cai-sql.html
Hướng dẫn: http://www.devart.com/dotconnect/sqlite/articles/tutorial_linq.html#model
Chú ý khi sử dụng
- Nhập đúng namspace. Bình thường cứ quen tay next next là hỏng đấy :D
Còn việc thêm, sửa, xóa thì giống hệt trong LINQ to SQL:
- Nạp, thêm dữ liệu: http://thuvienwinform.blogspot.com/2014/01/linq-to-sql-bai-1-load-va-them-du-lieu.html
- Sửa dữ liệu: http://thuvienwinform.blogspot.com/2014/01/linq-to-sql-bai-2-sua-du-lieu.html
- Xóa dữ liệu: http://thuvienwinform.blogspot.com/2014/01/linq-to-sql-bai-3-xoa-du-lieu.html
Chú ý:
Muốn sang máy khác chạy được cần copy toàn bộ thư viện (các tệp .dll) gồm:
1. Phần tự sinh của Devart
Devart.Data.dll
Devart.Data.Linq.dll
Devart.Data.SQLite.dll
Devart.Data.SQLite.Linq.dll
2. Phần lấy trong ổ cài của Devart: (mặc định: C:\Program Files (x86)\Devart\dotConnect\SQLite)
sqlite3.dll
thư mục x64
Tổng cộng bằng này cái:
Nếu không đủ sẽ gặp một số lỗi về như DbCommand..., version asembly...balabala
Code kiểm tra dữ liệu vừa thay đôi trong CSDL
thuvienwinform - Để xem dữ liệu vừa thay đổi (thêm, sửa, xóa) trong CSDL ta sử dụng code sau:
(sử dụng LINQ)
public static bool ChangeData(QLDTDataContext db) { int insert = db.GetChangeSet().Inserts.Count; int update = db.GetChangeSet().Updates.Count; int delete = db.GetChangeSet().Deletes.Count; if (insert + update + delete == 0) { return false; } return true; }Với QLDTDataContext là lớp tạo bởi item LinqToSql: http://thuvienwinform.blogspot.com/2014/03/code-kiem-tra-du-lieu-vua-thay-oi-trong-csdl.html
Kết quả trả vể true nếu có thay đổi và ngược lại
Một số hàm hữu ích trong LINQ to SQL
thuvienwinform - LINQ to SQL có rất nhiều hàm, thủ tục hỗ trợ chúng ta trong việc lọc dữ liệu chọn dữ liệu và tất nhiên là nó đã được tối ưu sẵn, cách sử dụng cũng rất đơn giản, dễ ràng trong việc sử dụng, hôm nay mình xin được giới thiệu với mọi người một số hàm, thủ tục chọn dữ liệu
1. Chọn dữ liệu từ 2 bảng:
- Để chọn dữ liệu từ 2 bảng ta sẽ dùng lệnh from như sau:
var canBos = from cb in db.tbCanBos from phong in db.tbPhongs where (cb.IdPhong == phong.IdPhong) && (phong.TenPhong == "Khoa Ngữ") select new { hotenthat = cb.Hoten, quequan = cb.QueQuan, cb.HeSoLuong, phong.TenPhong };
- Chú ý: trong select ta phải dùng new, tức là tạo một bảng mới gồm các thành viện được chọn.
2. Sắp xếp tăng dần theo một trường
- Cách 1: Sắp xếp ngay trong câu lệnh truy vấn:
var canBos = from cb in db.tbCanBos from phong in db.tbPhongs where (cb.IdPhong == phong.IdPhong) && (phong.TenPhong == "Khoa Ngữ") orderby cb.HeSoLuong descending //Sap xep theo hesoluong select new { hotenthat = cb.Hoten, quequan = cb.QueQuan, cb.HeSoLuong, phong.TenPhong };
Câu truy vấn này sẽ chọn ra những cán bộ thuộc khoa ngoại ngữ và sắp xếp tăng dần theo hesoluong
- Cách 2: Truy vấn xong mới sắp xếp (cách này hay hơn)
var canBos = from cb in db.tbCanBos from phong in db.tbPhongs where (cb.IdPhong == phong.IdPhong) && (phong.TenPhong == "Khoa Ngữ") select new { hotenthat = cb.Hoten, quequan = cb.QueQuan, cb.HeSoLuong, phong.TenPhong }; canBos = canBos.OrderByDescending(p => p.HeSoLuong);
3. Lấy số dữ liệu nhất định
- Như ví dụ lấy số cán bộ ở trên, ta chỉ cẩn lấy ra 10 đầu tiên trong kết quả thu được thôi, câu lệnh sẽ là:
canBos = canBos.Take(10);Hoặc
canBos = canBos.Skip(10);- Với cách dùng Skip() thì ta sẽ bỏ qua 10 người ở đầu danh sách và lấy những người từ vị trí 11 trong danh sách thu được
4. Đếm số dữ liệu thu được sau khi truy vấn
int soNguoi = canBos.Count(10);
<còn tiếp>
[Linq to Sql] Tim kiếm
thuvienwinform - Trong bài này mình sẽ hướng dẫn các bạn cách truy vấn để tìm kiếm bằng Linq to Sql. Cũng tương tự như sửa, xóa đầu tiên cần xác định đối tượng tìm và lưu vào một biến, rồi chọn Datasource của datagridView là biến đó là OK
Demo: https://www.dropbox.com/s/ox0v7259rpyik91/Linq-ThemSuaXoa.rar (64KB)
Code:
Demo: https://www.dropbox.com/s/ox0v7259rpyik91/Linq-ThemSuaXoa.rar (64KB)
Code:
private void btTimKiem_Click(object sender, EventArgs e)//Tìm kiếm { //Tìm Kiếm var listThanhVien = from ltv in db.DSLs where ltv.HoTen.Contains(txtHoTen.Text)//Chọn những thành viên nào có tên gần giống với txtHoTen.Text select ltv; dgvNoiDung.DataSource = listThanhVien; dgvNoiDung.Refresh(); }
[Linq to Sql] Xóa dữ liệu
thuvienwinform - Sau bài 2: Sửa dữ liệu hôm nay mình sẽ giới thiệu với mọi người cách xóa một họ tên trong bảng DSL. Cũng tương tự như sửa vậy, đầu tiên cần xác định xem cái nào cần xóa sau đó ta xóa thành viên được chọn là xong. Ở đây việc chọn mình xác định bằng cách là dùng sự kiện CellClick của datagridView để xác định thành viên đang chọn.
Tải demo: bài 4
Code:
Tải demo: bài 4
Code:
private void dgvNoiDung_CellClick(object sender, DataGridViewCellEventArgs e) { txtHoTen.Text = dgvNoiDung.CurrentRow.Cells["HoTen"].Value.ToString(); } private void btXoa_Click(object sender, EventArgs e)//Xóa { //Xóa var thanhVien = db.DSLs.SingleOrDefault(tv => tv.HoTen == txtHoTen.Text);//Xác định thành viên cần xóa db.DSLs.DeleteOnSubmit(thanhVien);//Xóa thanh viên đã chọn db.SubmitChanges();//Xác nhận thay đổi Refresh();//làm mới lại datagridView }
[Linq to Sql] Sửa dữ liệu
thuvienwinform - Sau bài 1: Load và thêm dữ liệu thì trong bài này mình sẽ giới thiệu code để sửa dữ liệu trong CSDL bằng LINQ to SQL. Các nguyên liệu như CSDL, form vẫn dùng ở bài trước. OK code khá đơn giản thui:
Tải Demo: bài 4
private void btSua_Click(object sender, EventArgs e)//Sửa { //Sửa //Xác định thanh viên cần sửa var thanhVien = (from tv in db.DSLs where tv.HoTen == dgvNoiDung.CurrentRow.Cells["HoTen"].Value.ToString()//Chọn thành viên nào có tên giống tên nhập vào select tv ).SingleOrDefault(); thanhVien.HoTen = txtHoTen.Text; db.SubmitChanges(); Refresh(); }
Giải thích:
SingleOrDefault(): chọn 1 đối tượng mà thôi
Ở đâu mình truy vấn thành viên có tên giống với tên trong txtHoTen sau đó tiến hành gán cho nó tên mới thông qua txtHoTen luôn
[Linq to Sql] Load và Thêm dữ liệu
thuvienwinfom - Để thêm dữ liệu vào CSDL bằng Linq ta cần khai báo thư viện System.Linq (using System.Linq). Thường thì khi ta tạo project mới thì nó đã thêm sẵn dòng này cho ta rồi! OK bây giờ ta sẽ thực hiện việc thêm dữ liệu bằng Linq, 1 nốt nhạc là xong :v
Tải demo: Bài 4
Chuẩn bị: (vì mấy cái này cần cho mấy bài sau nên mọi người mới tập sử dụng Linq nên làm theo y hệt sẽ dễ hiểu hơn)
I. Tạo môi trường luyện tập
1. CSDL
+ Tên bảng: DSL (danh sách lớp)
+ Form mẫu. Các biến như trong hình
+ Add item LINQ to SQL cho form này:
B1: project -> add new item (CS + A)
B2: chọn LINQ to SQL và đặt tên cho nó là: LinqToSql -> ok
B3: Kéo bảng DSL đã tạo vào -> Ctrl + S
Tạo 1 biến db như sau:
LinqToSqlDataContext db = new LinqToSqlDataContext();
OK vậy là đã tạo được môi trường luyện tập...
II. Load dữ liệu từ CSDL ra datagridView bằng LINQ to SQL
Để tiện sử dụng lần sau ta tạo sẵn một thủ tục Refresh như sau:
private void Refresh() { dgvNoiDung.Rows.Clear(); var list = from p in db.DSLs where p.HoTen == p.HoTen//Chọn toàn bộ bảng select p; dgvNoiDung.DataSource = list; }
Giải thích:
var list: khai báo 1 biến chưa có kiểu
form p in db.DSLs
where p.HoTen == p.HoTen
select p; :chọn toàn bộ bảng DSL
OK cho Refresh vào form load là xong viêc load dữ liệu:
private void Form1_Load(object sender, EventArgs e) { //dgvNoiDung.DataSource = db.DSLs;//Cách 1 Refresh();//Cách 2 }
III. Thêm dữ liệu vào CSDL
- Nếu ai đã từng sử dụng ADO.NET thì sẽ cảm thấy nó hơi ngược một chút. Trong ADO.NET thì chúng ta select -> frrom -> where còn trong LINQ to SQL thì from -> where -> select.
- Để thêm 1 họ tên vào bảng DSL ta code như sau:
private void btThem_Click(object sender, EventArgs e)//Sự kiện click btThem { //Thêm mới DSL thanhVien = new DSL();//Tạo 1 thành viên mới thanhVien.HoTen = txtHoTen.Text;//Gán giá trị HoTen của thanhvien db.DSLs.InsertOnSubmit(thanhVien);//Thêm thanhvien này vào csdl db.SubmitChanges();//Xác nhận thay đổi Refresh();//Làm mới lại datagridView }Giải thích:
db.DSLs.InsertOnSubmit: thêm một thành viên vào bảng DSL
db.SubmitChanges: xác nhận thay đổi trong bảng. Nếu không có dòng này thì dữ liệu sẽ không được thêm vào CSDL
Bài 2 sẽ là sửa dữ liệu
Hướng dẫn sửa lỗi "The DELETE statement conflicted with the REFERENCE constraint "FK_...""
B1: Trong Visual Studio showdata bảng cần backup -> chuột phải bảng cần backup -> show table data -> ấn nút script
-> được đoạn code:
OK để đó đã
B2:
Sau đó copy đoạn code nhận đc:
B3: copy code B2 paste thêm vào đoạn code ở B1:
B4: Bây giờ có thể xóa bảng đó đi rùi
B5:
Ấn nút Execute (CS+E) trong tab chứa code ở B3
Vậy là bảng đã quay trở lại và cái quan hệ 1-1 đó cũng đã bị xóa! Chúc các bạn thành công
Hướng dẫn sửa lỗi "Unable to access T-SQL components" trong Visual Studio 2012
thuvienwinform - Lỗi này gặp phải khi ta update SQL Server! Nó làm ta không xem đc CSDL trực tiếp trong Visual Studio (VS). Dấu hiệu như sau: khi ấn hiện thị CSDL bằng VS thì nó xuất hiện thông báo như trên kia và hộp thoại thứ 2 là "An incompatible DacFx version is installed" Cách sửa khá đơn giản, bạn chỉ cẩn tải về 2 bản update sau:
DacFx: http://download.microsoft.com/download/7/0/A/70AC5A1F-009A-455E-AB4E-D1427409254D/SSDT_11.1.31009.1_EN.iso hoặc http://www.microsoft.com/en-us/download/details.aspx?id=35756
Sau khi cài 2 bản update này sẽ có thể mở CSDL trực tiếp trong VS.
Kết nối C# đến SQLite
Hướng dẫn đầy đủ các thao tác giữa SQLite và winform (cụ thể là C#) .Như bài viết trước chúng ta đã giới thiệu sơ qua về SQLite. Hôm nay mình sẽ hướng dẫn các bạn chi tiết các bước kết nối từ C# đến CSDL của SQLite, rất đơn giản thôi.
Demo: https://www.dropbox.com/s/cjmq9o4091uw0iq/C%23-SQLite-thuvienwinform.rar
Bắt đầu!
Bước 1: ta phải có database đã, trong database có ít nhất 1 bảng. (Xem hướng dẫn tạo database và bảng với SQLite: http://thuvienwinform.blogspot.com/2013/10/SQLite-chay-ung-dung-su-dung-da-tabase-tren-may-khong-cai-sql.html).
Bước 2: Tạo 1 project mới có kiểu như sau: gồm 1 button và 1 datagridview
Bước 3: Add System.Data.SQLite vào project này (2 bước)
Bước 3.1: Chuột phải vào References -> Manage Nuget Packages...
Bước 3.2: làm như hình để thêm thư viên sử dụng SQLite
Chú ý: ấn vào All cho nó load xong hẵng tìm kiếm
Install xong thì using System.Data.SQLite;
Bước 4: Lập trình lấy dữ liệu ra (sau khi chạy sẽ gặp lỗi những không sao, code xong hãy chuyển qua bước 5):
OK ấn F5 và thưởng thức
Tải thư viện SQLite bằng Packet Manage Console
- vào Package Manager Console .
- Gõ vào Install-package System.Data.SQLite xong ấn Enter
Kết quả như vậy là OK
Demo: https://www.dropbox.com/s/cjmq9o4091uw0iq/C%23-SQLite-thuvienwinform.rar
Bắt đầu!
Bước 1: ta phải có database đã, trong database có ít nhất 1 bảng. (Xem hướng dẫn tạo database và bảng với SQLite: http://thuvienwinform.blogspot.com/2013/10/SQLite-chay-ung-dung-su-dung-da-tabase-tren-may-khong-cai-sql.html).
CSDL chứa 1 bảng tb1 gồm 2 cột ID và Name (đã tạo ở bài viết trước)
Bước 2: Tạo 1 project mới có kiểu như sau: gồm 1 button và 1 datagridview
Bước 3: Add System.Data.SQLite vào project này (2 bước)
Bước 3.1: Chuột phải vào References -> Manage Nuget Packages...
Bước 3.2: làm như hình để thêm thư viên sử dụng SQLite
Chú ý: ấn vào All cho nó load xong hẵng tìm kiếm
Bước 4: Lập trình lấy dữ liệu ra (sau khi chạy sẽ gặp lỗi những không sao, code xong hãy chuyển qua bước 5):
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SQLite; namespace SQLite { public partial class Form1 : Form { SQLiteConnection conn = new SQLiteConnection("Data Source = test.db"); //Cú pháp: Data Source = Đường dẫn đến file database. Ví dụ: Data Source = C:\test.db hoặc copy file database vào cùng thư mục public Form1() { InitializeComponent(); this.button1.Click += new System.EventHandler(this.button1_Click);//Thêm sự kiện click conn.Open();//Mở kết nối } private void button1_Click(object sender, EventArgs e) { SQLiteDataAdapter da = new SQLiteDataAdapter("Select * From tb1", conn);//Chọn toàn bảng DataTable dt = new DataTable("Lite"); da.Fill(dt);//Xuất dữ liệu ra bảng dataGridView1.DataSource = dt; } } }
Tải thư viện SQLite bằng Packet Manage Console
- vào Package Manager Console .
- Gõ vào Install-package System.Data.SQLite xong ấn Enter
Kết quả như vậy là OK
SQLite Giải pháp cho những máy không cài SQL | Hướng dẫn cơ bản: tạo databse, lưu database, đọc database
SQLite là một hệ quản trị CSDL rất gọn nhẹ! Với những ứng dụng sử dụng đến CSDL chỉ chạy được trên những máy cài hệ quản trị CSDL (cụ thể là SQL Server), còn những máy không cài được thì sao, sẽ không chạy được. Nhưng đừng lo, với SQLite bạn vẫn chạy các ứng dụng đó trên các máy khác được. Vì SQLite không cần cài đặt, file dll của nó chưa đến 1MB.
Công cụ sử dụng là: sqlite3.exe (501KB): https://www.dropbox.com/s/6ag8gb47ryyvsaj/SQLite-thuvienwinform.rar
Giải nén ta được file test.db (ví dụ database ở dưới) và sqlite3.exe bạn có thể coi nó là SQL Server vậy, ta thực hành các câu lệnh với nó xong chuyển qua winform cũng tương tự thôi.
Hoặc ban có thể sử dụng SQLite Studio: http://sqlitestudio.pl/?act=download (2MB)
* Sử dụng SQLite Studio
- Thêm/tạo CSDL
- Tạo bảng
- Thêm dữ liệu vào bảng
SQLite Studio rất nhẹ và trực quan như kiểu SQL Server luôn! Lúc đầu nên dùng sqlite3.exe để thông thạo câu lệnh
1. Tạo Database cho SQLite:
Cú pháp:
attach database 'ten_database.db' as 'TenDaiDienChoDatabase';
ví dụ:
attach 'test.db' as 'db';
khi đó trong cùng folder sẽ xuất hiện 1 file test.db
2. Tạo bảng dữ liệu trong database vừa tạo:
Cú pháp:
Create table TenBang ( Cot1 KieuDuLieu, Cot2 KieuDuLieu, ... Cotn KieuDuLieu );
Ví dụ:
Create table tb1 (
ID int,
Cot2 nvarchar(50),
);
Vậy là ta đã có 1 bảng tên tb1 với 2 cột là ID kiểu int và cột Name kiểu nvarchar.
Tham khảo thêm các kiểu dũ liệu: http://www.tutorialspoint.com/sqlite/sqlite_data_types.htm
3. Chèn dữ liệu vào bản (Giống SQL server)
Cú pháp
Insert Into Tenbang (TenCot) Values (GiaTri);
Ví Dụ:
Insert Into tb1 (ID, Name) Values (1, 'Nguyen Van X');
- Để xem dữ liệu trong bảng ta cũng sử dụng cú pháp Select * From tenbang;
kết quả trả về là: 1|Nguyen Van X
4. Lưu bảng
Cú pháp:
.backup TenFileDatabase
5. Đọc lại dữ liệu từ database:
Cú pháp:
.restore TenFileDatabase Select * From TenBang;
- Chú ý: sqlite3.exe và file database cùng thư mục
OK.
- Để xem một số câu lệnh ta gõ vào .help