[ad_1]
Tôi đang cố gắng kết nối dự án cơ bản trực quan của mình với cơ sở dữ liệu mysql bằng xampp. Tôi đã tải xuống một vbconnector sql từ trang web này https://dev.mysql.com/downloads/connector/net/
nhưng khi tôi cố gắng gỡ lỗi dự án của mình, mọi lệnh mysql đều báo lỗi và nếu tôi đi và thêm lại tham chiếu mysql thì tất cả các lỗi đều bị giải mã nhưng sau đó nếu tôi gỡ lỗi lại thì vấn đề gỡ lỗi tương tự lại xảy ra.
Những gì tôi đã thử:
Imports MySql.Data.MySqlClient Imports System.IO Module databaseconn Public conn As MySqlConnection Public dr As MySqlDataReader Public flag As Boolean Public dt As DataTable Public da As MySqlDataAdapter Public i As Integer Public ds As DataSet Public cmd As MySqlCommand Public result As Boolean Public Function dbconn() As Boolean Try If conn.State = ConnectionState.Closed Then conn.ConnectionString = "server=localhost;username=root;password=;database=database" result = True End If Catch ex As Exception result = False MsgBox(ex.Message) End Try Return result End Function End Module
Giải pháp 1
Mã đó không làm gì với DB, vì vậy rất khó để tìm ra vấn đề của bạn. Tất cả những gì mã đó làm là thiết lập một chuỗi kết nối (mà tôi sẽ quay lại sau) và không có gì khác: kết nối không thể sử dụng được – và dù sao cũng đang bị xử lý một cách tồi tệ.
Khi đặt câu hỏi, bạn cần bao gồm thông tin liên quan: “khi tôi cố gắng gỡ lỗi dự án của mình, mọi lệnh mysql đều đọc lỗi” không cho ai biết điều gì vì chúng tôi không thể thấy mã thực hiện bất kỳ điều gì với đối tượng Lệnh hoặc cho biết điều gì có thể có thông báo lỗi.
Thông báo lỗi chứa rất nhiều thông tin nếu bạn đọc chúng cẩn thận – từ dòng nào của tệp hiển thị sự cố cho đến mô tả sự cố được tìm thấy. Vì vậy hãy bắt đầu ở đây: Cách viết mã để giải quyết vấn đề, Hướng dẫn cho người mới bắt đầu Phần 2: Lỗi cú pháp[^] – nó nói về lỗi cú pháp, nhưng lỗi thời gian chạy có xu hướng có cùng một thông tin được trình bày hơi khác một chút.
Ngoài ra còn có một bài viết hay ở đây: Đặt câu hỏi là một kỹ năng[^] trong đó giải thích cách đặt câu hỏi để bạn nhận được câu trả lời hữu ích.
Quay lại mã bạn hiển thị và tôi có thể thấy ba vấn đề ở đó:
1) Mật khẩu của bạn cho DB nhiều người dùng không bao giờ được để trống, cũng như không được sử dụng tên quản trị viên mặc định – làm như vậy sẽ cho phép bất kỳ ai muốn làm bất cứ điều gì với DB của bạn: đánh cắp nó, tranh giành tiền chuộc hoặc phá hủy nó chẳng hạn. Đặt mật khẩu tốt, mạnh cho tài khoản quản trị viên đã đổi tên và bạn sẽ an toàn hơn.
2) Không mã hóa cứng các chuỗi kết nối vào mã của bạn: điều đó có nghĩa là khi bạn phát hành nó, bạn phải thay đổi nó cho máy chủ sản xuất (hoặc tệ hơn là kiểm tra máy chủ sản xuất tự sát) và giải phóng hiệu quả mã chưa được kiểm tra! Những sai sót như vậy có thể ảnh hưởng xấu đến khách hàng và ảnh hưởng tiêu cực đến danh tiếng cũng như số dư ngân hàng của bạn … Sử dụng tệp cấu hình để giữ chuỗi kết nối để mã không phải thay đổi khi bạn phát hành.
3) Không sử dụng lại một Kết nối tới DB: Tạo nó khi bạn cần một Kết nối bên trong Using
chặn và hệ thống sẽ Đóng và Loại bỏ nó khi bạn hoàn thành việc đó. Các Kết nối như vậy không chỉ khan hiếm tài nguyên mà còn có thể gây ra sự cố thực sự cho bạn nếu bạn mở DataReader trên một kết nối rồi cố gắng sử dụng lại cùng kết nối đó để CHÈN hoặc CẬP NHẬT một bảng: máy chủ sẽ đưa ra lỗi vì trình đọc vẫn đang sử dụng sự liên quan.
[ad_2]
コメント