2012-04-09 40 views
12

Tôi nhận được lỗi saukhả năng tiếp cận nhất quán

không phù hợp khả năng tiếp cận: Loại tham số 'Db.Form1.ConnectionString' là khó tiếp cận hơn phương pháp 'Db.Form1.BuildConnectionString (Db.Form1.ConnectionString)'

//Name spaces 
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using Microsoft.VisualBasic; 
using System.Collections; 
using System.Diagnostics; 
using System.Data.OleDb; 
using System.IO; 
using System.Drawing.Printing; 

// 
    namespace Db 
{ 
    public partial class Form1 : Form 
    { 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    public void SetBusy() 
    { 
     this.Cursor = Cursors.WaitCursor; 
     Application.DoEvents(); 
    } 
    public void SetFree() 
    { 
     this.Cursor = Cursors.Default; 
     Application.DoEvents(); 
    } 
    //connection string into parts 
    struct ConnectionString 
    { 
     public string Provider; 
     public string DataSource; 
     public string UserId; 
     public string Password; 
     public string Database; 
    } 
    //Declare 
    public string BuildConnectionString(ConnectionString connStr) ------> getting error here 
    { 
     string[] parts = new string[5]; 
     parts[0] = "Provider=" + connStr.Provider; 
     parts[1] = "Data Source=" + connStr.DataSource; 
     parts[2] = "User Id=" + connStr.UserId; 
     parts[3] = "Password=" + connStr.Password; 
     parts[4] = "Initial Catalog=" + connStr.Database; 
     return string.Join(";", parts); 
    } 
    // settings 
    public bool IsValidConnectionForPrinting() 
    { 
     SetBusy(); 

     ConnectionString connStr = new ConnectionString(); 
     connStr.Provider = cboProvider.Text; 
     connStr.DataSource = cboDataSource.Text; 
     connStr.UserId = txtUserId.Text; 
     connStr.Password = txtPassword.Text; 
     connStr.Database = cboDatabase.Text; 
     //connection string to database 
     string connectionString = BuildConnectionString(connStr); 
     OleDbConnection conn = new OleDbConnection(connectionString); 
     try 
     { 
      conn.Open(); 
      OleDbCommand cmd = conn.CreateCommand; 
      cmd.CommandType = CommandType.TableDirect; 
      cmd.CommandText = "vw_pr_DL"; 
      cmd.ExecuteScalar(); 
      cmd.CommandText = "vw_pr_VR"; 
      cmd.ExecuteScalar(); 
      //cmd.CommandText = "vw_pr_VR" 
      //cmd.ExecuteScalar() 
      conn.Close(); 
     } 
    //Exception messages 
     catch (Exception ex) 
     { 
      SetFree(); 
      if (ex.Message.StartsWith("Invalid object name")) 
      { 
       MessageBox.Show(ex.Message.Replace("Invalid object name", "Table or view not found"), "Connection Test"); 
      } 
      else 
      { 
       MessageBox.Show(ex.GetBaseException().Message, "Connection Test"); 
      } 
      return false; 
     } 
     SetFree(); 
     return true; 
    } 

// khi người dùng nhấp chuột testbutton

private void btnConnTest_Click(object sender, EventArgs e) 
{ 

if (IsValidConnectionForPrinting()) 
    { 
     MessageBox.Show("Connection succeeded", "Connection Test"); 
    } 
} 
+1

câu hỏi của bạn là gì? Sửa khả năng truy cập. –

Trả lời

10

Loại ConnectionString của bạn không phải là public, nhưng phương thức công khai của lớp công khai đang sử dụng nó làm thông số. Bạn cũng phải làm cho các loại public, ví dụ:

// If it's a class 
public class ConnectionString { ... } 
31

Như đã trình bày here, các lớp học và cấu trúc là tin theo mặc định nếu không sửa đổi lần truy cập được chỉ định. Trong trường hợp bạn đã xác định cấu trúc của bạn như:

struct ConnectionString 
{ 
    public string Provider; 
    public string DataSource; 
    public string UserId; 
    public string Password; 
    public string Database; 
} 

bạn cần phải thay vì định nghĩa nó như:

public struct ConnectionString 
{ 
    public string Provider; 
    public string DataSource; 
    public string UserId; 
    public string Password; 
    public string Database; 
} 
Các vấn đề liên quan