2012-04-09 13 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; 
    } 

// जब उपयोगकर्ता क्लिक testbutton

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; } 

आप के बजाय के रूप में यह निर्धारित करना होगा: आप कहाँ अपने struct के रूप में परिभाषित किया गया है? अभिगम्यता को ठीक करें। –

उत्तर

10

आपका ConnectionString प्रकार public नहीं है, फिर भी, सार्वजनिक वर्ग का सार्वजनिक तरीका इसे पैरामीटर के रूप में उपयोग कर रहा है। तुम भी, प्रकार public करना चाहिए उदाहरण के लिए:

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

के रूप में वर्णित here, वर्गों और structs यदि पहुँच नहीं संशोधक निर्दिष्ट किया जाता है डिफ़ॉल्ट से निजी हैं।

public struct ConnectionString 
{ 
    public string Provider; 
    public string DataSource; 
    public string UserId; 
    public string Password; 
    public string Database; 
} 
संबंधित मुद्दे