2012-04-09 29 views
12

私は次のようなエラーに一貫性のないアクセス

一貫性のない、アクセシビリティ取得しています:パラメータの型は「Db.Form1.ConnectionString」「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; 
    } 

//ユーザーが

private void btnConnTest_Click(object sender, EventArgs e) 
{ 

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

あなたの質問は何ですか:あなたは代わりとしてそれを定義する必要があり

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

:あなたはあなたとして、構造体を定義している場合は?アクセシビリティを修正してください。 –

答えて

10

testbuttonクリックConnectionStringタイプはpublicではありませんが、パブリッククラスのパブリックメソッドではパラメータとして使用しています。あなたはまた、例えば、タイプpublicを行う必要があります。

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

ようにはアクセス修飾子が指定されていない場合hereは、クラスや構造体は、デフォルトでプライベートに説明しました。

public struct ConnectionString 
{ 
    public string Provider; 
    public string DataSource; 
    public string UserId; 
    public string Password; 
    public string Database; 
} 
関連する問題