Em chào thầy, em có viết 1 ứng dụng C# sử dụng cơ sở dữ liệu theo hướng dẫn của thầy. nhưng khi e chạy thì chỉ chạy được trên máy viết có cài visual studio 2013 còn mang sang máy khác chạy không cài visual studio thì không chạy được, thầy xem giúp em vì sao lại như vậy với ạ?
Em có xem thì do hàm kết nối cơ sở dữ liệu, tắt đi thì mở đc trên máy không cài vs nhưng bình thường không tắt thì vẫn mở được trên máy cài vs nên cũng không rõ lỗi sao.
Đây là ứng dụng mẫu bị lỗi trên: https://1drv.ms/u/s!AnXdYqpMtT-snMUtqjzqGD6uNE9P9Q
1 Trả lời
Mình không hiểu rõ lắm câu em viết “tắt đi thì mở đc trên máy không cài vs nhưng bình thường không tắt thì vẫn mở được trên máy cài vs nên cũng không rõ lỗi sao”
Em cần kiểm tra lại các phần sau:
- Máy tính không cài VS đó thì đã cài hệ quản trị SQL Server chưa?
- Em đã thực hiện việc restore lại CSDL trên máy tính đó hoặc attach database của em vào hệ quản trị CSDL của máy em đang chạy code chưa?
- Em cấu hình chuỗi kết nối lại cho phù hợp với trên máy khác chưa (vì thông tin chuỗi kết nối khác với máy em đang code thì khi em triển khai em phải thay đổi lại, ví dụ như các thông số Server, Database, UserId, Password)
- Và em nên đọc cách đóng gói phần mềm chứ đừng copy các file exe, dll đến máy khác vì khi copy thế này có thể thiếu các thư viện nào đó thì nó sẽ không thể chạy được.
Khi ứng dụng của em khởi động, nó thực hiện kết nối tới CSDL. Nhưng do không kết nối được thì nó bị lỗi thôi em.
Về việc CSDL em để đường dẫn “Application.StartupPath + @”\CSDL.mdf….” là chưa đủ, vì chuỗi kết nối còn có các thông tin khác nữa như SQL Server tên gì, mật khẩu, và Password để đăng nhập nữa.
Em có thể xem ví dụ sau:
Con.ConnectionString = @”Data Source=.\SQLEXPRESS;AttachDbFilename=” + Application.StartupPath + @”\CSDL.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True”;
=>Data Source chính là tên máy chủ của SQL Server, khi em cài đặt trên máy khác thì cần đặt lại cho đúng với máy em cài SQL Server của máy đó.
Vì máy em cài VS nên mặc định nó cài sẵn một SQL Server Engine mặc định cho máy em, nên khi em copy đến một máy khác sẽ không thể chạy được.
Để chạy được trên một máy không cài VS em cần cài đặt SQL Server trên má đó và thực hiện thiết lập lại chuỗi kết nối tới CSDL của em.
dạ vâng e cảm ơn, vậy là chắc do phần SQL Server Engine trên máy khách không có nên nó không khởi chạy được rồi ạ
“tắt đi thì mở đc trên máy không cài VS nhưng bình thường không tắt thì vẫn mở được trên máy cài vs nên cũng không rõ lỗi sao” ý em là e tắt hàm kết nối tới cơ sở dữ liệu thì ứng dụng nó mở lên được trên máy không cài visual studio ạ.
máy người dùng không cài SQL Server lẫn visual studio. em muốn tạo ứng dụng để có thể chạy trên máy khách mà người dùng không cần cài 2 cái đó ấy ạ.
về chuỗi kết nối thì em đã thử folder Debug chứa ứng dụng, thư viện, cơ sở dữ liệu.. mang qua máy khác có cài visual studio (khác máy tạo ứng dụng ban đầu) chạy trực tiếp file .exe thì nó mở lên bình thường, cơ sở dữ liệu em dùng dạng “Application.StartupPath + @”\CSDL.mdf….” nên có lẽ đây không phải lỗi.
đóng gói phần mềm thì em chưa thử nhưng e có tạo 1 project mới không có thêm thư viện gì chỉ có hàm kết nối cơ sở dữ liệu + cơ sở dữ liệu để thử thì nó vẫn không mở được (chạy trực tiếp ứng dụng .exe) trên máy mà không cài Visual Studio (chạy bình thường trên các máy có cài VS)
Cơ sở dữ liệu thì em sử dụng cơ sở dữ liệu tích hợp trong VS:
http://i.imgur.com/dI9xOvA.png
e đang nghĩ là không biết có phải do sử dụng cơ sở dữ liệu này mà máy khách phải cài thêm bộ sql hỗ trợ thì mới chạy được không
em cảm ơn thầy đã trả lời.