2016-07-23 215 views
0

hellow即時消息本新論壇。我搜索了一天,我無法找到任何解決我的問題如何調用從一個類到另一個類的方法

我需要從窗體類調用一個類中的函數。 但evrytime我嘗試我得到錯誤'cs0117''DB連接不包含插入定義''第19行'

這是我的形式,我想調用一個類'DBconnection.insert()

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApplication2 
{ 
    public partial class FrmEditUser : Form 
    { 
     public FrmEditUser() 
     { 
      InitializeComponent(); 

      DBconnection.insert(); 
     } 

     private void LblUserName_Click(object sender, EventArgs e) 
     { 

     } 
    } 
} 

這是我想要得到

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using MySql.Data.MySqlClient; 
using System.Windows.Forms; 
using System.Diagnostics; 
using System.IO; 
//using System.Data.Odbc;    //added libary 
namespace WindowsFormsApplication2 
{ 
    public class DBconnection : Form 
    { 
     private MySqlConnection connection; 
     private string server; 
     private string database; 
     private string uid; 
     private string password; 

     //Constructor 
     public void DBConnect() 
     { 
      Initialize(); 
     } 

     //Initialize values 
     private void Initialize() 
     { 
      server = "localhost"; 
      database = "tablemembers"; 
      uid = "******"; 
      password = "******"; 
      string connectionString; 
      connectionString = "localhost=" + server + ";" + "tablemembers=" + database + ";" + "******=" + uid + ";" + "******=" + password + ";"; 

      connection = new MySqlConnection(connectionString); 
     } 


     //open connection to database 
     private bool OpenConnection() 
     { 
      try 
      { 
       connection.Open(); 
       return true; 
      } 
      catch (MySqlException ex) 
      { 
       switch (ex.Number) 
       { 
        case 0: 
         MessageBox.Show("Cannot connect to server. Contact administrator"); 
         break; 

        case 1045: 
         MessageBox.Show("Invalid username/password, please try again"); 
         break; 
       } 
       return false; 
      } 
     } 

     //Close connection 
     private bool CloseConnection() 
     { 
      try 
      { 
       connection.Close(); 
       return true; 
      } 
      catch (MySqlException ex) 
      { 
       MessageBox.Show(ex.Message); 
       return false; 
      } 
     } 

     //Insert statement 
     public void Insert() 
     { 
      string query = "INSERT INTO tableinfo (name, age) VALUES('John Smith', '33')"; 

      //open connection 
      if (this.OpenConnection() == true) 
      { 
       //create command and assign the query and connection from the constructor 
       MySqlCommand cmd = new MySqlCommand(query, connection); 

       //Execute command 
       cmd.ExecuteNonQuery(); 

       //close connection 
       this.CloseConnection(); 
      } 
     } 

     //Update statement 
     public void Update() 
     { 
      string query = "UPDATE tableinfo SET name='Joe', age='22' WHERE name='John Smith'"; 

      //Open connection 
      if (this.OpenConnection() == true) 
      { 
       //create mysql command 
       MySqlCommand cmd = new MySqlCommand(); 
       //Assign the query using CommandText 
       cmd.CommandText = query; 
       //Assign the connection using Connection 
       cmd.Connection = connection; 

       //Execute query 
       cmd.ExecuteNonQuery(); 

       //close connection 
       this.CloseConnection(); 
      } 
     } 

     //Delete statement 
     public void Delete() 
     { 
      string query = "DELETE FROM tableinfo WHERE name='John Smith'"; 

      if (this.OpenConnection() == true) 
      { 
       MySqlCommand cmd = new MySqlCommand(query, connection); 
       cmd.ExecuteNonQuery(); 
       this.CloseConnection(); 
      } 
     } 

     //Select statement 
     public List<string>[] Select() 
     { 
      string query = "SELECT * FROM tableinfo"; 

      //Create a list to store the result 
      List<string>[] list = new List<string>[3]; 
      list[0] = new List<string>(); 
      list[1] = new List<string>(); 
      list[2] = new List<string>(); 

      //Open connection 
      if (this.OpenConnection() == true) 
      { 
       //Create Command 
       MySqlCommand cmd = new MySqlCommand(query, connection); 
       //Create a data reader and Execute the command 
       MySqlDataReader dataReader = cmd.ExecuteReader(); 

       //Read the data and store them in the list 
       while (dataReader.Read()) 
       { 
        list[0].Add(dataReader["id"] + ""); 
        list[1].Add(dataReader["name"] + ""); 
        list[2].Add(dataReader["age"] + ""); 
       } 

       //close Data Reader 
       dataReader.Close(); 

       //close Connection 
       this.CloseConnection(); 

       //return list to be displayed 
       return list; 
      } 
      else 
      { 
       return list; 
      } 
     } 

     //Count statement 
     public int Count() 
     { 
      string query = "SELECT Count(*) FROM tableinfo"; 
      int Count = -1; 

      //Open Connection 
      if (this.OpenConnection() == true) 
      { 
       //Create Mysql Command 
       MySqlCommand cmd = new MySqlCommand(query, connection); 

       //ExecuteScalar will return one value 
       Count = int.Parse(cmd.ExecuteScalar() + ""); 

       //close Connection 
       this.CloseConnection(); 

       return Count; 
      } 
      else 
      { 
       return Count; 
      } 
     } 

     //Backup 
     public void Backup() 
     { 
      try 
      { 
       DateTime Time = DateTime.Now; 
       int year = Time.Year; 
       int month = Time.Month; 
       int day = Time.Day; 
       int hour = Time.Hour; 
       int minute = Time.Minute; 
       int second = Time.Second; 
       int millisecond = Time.Millisecond; 

       //Save file to C:\ with the current date as a filename 
       string path; 
       path = "C:\\" + year + "-" + month + "-" + day + "-" + hour + "-" + minute + "-" + second + "-" + millisecond + ".sql"; 
       StreamWriter file = new StreamWriter(path); 


       ProcessStartInfo psi = new ProcessStartInfo(); 
       psi.FileName = "mysqldump"; 
       psi.RedirectStandardInput = false; 
       psi.RedirectStandardOutput = true; 
       psi.Arguments = string.Format(@"-u{0} -p{1} -h{2} {3}", uid, password, server, database); 
       psi.UseShellExecute = false; 

       Process process = Process.Start(psi); 

       string output; 
       output = process.StandardOutput.ReadToEnd(); 
       file.WriteLine(output); 
       process.WaitForExit(); 
       file.Close(); 
       process.Close(); 
      } 
      catch (IOException ex) 
      { 
       MessageBox.Show("Error , unable to backup!"); 
      } 
     } 

     //Restore 
     public void Restore() 
     { 
      try 
      { 
       //Read file from C:\ 
       string path; 
       path = "C:\\MySqlBackup.sql"; 
       StreamReader file = new StreamReader(path); 
       string input = file.ReadToEnd(); 
       file.Close(); 


       ProcessStartInfo psi = new ProcessStartInfo(); 
       psi.FileName = "mysql"; 
       psi.RedirectStandardInput = true; 
       psi.RedirectStandardOutput = false; 
       psi.Arguments = string.Format(@"-u{0} -p{1} -h{2} {3}", uid, password, server, database); 
       psi.UseShellExecute = false; 


       Process process = Process.Start(psi); 
       process.StandardInput.WriteLine(input); 
       process.StandardInput.Close(); 
       process.WaitForExit(); 
       process.Close(); 
      } 
      catch (IOException ex) 
      { 
       MessageBox.Show("Error , unable to Restore!"); 
      } 
     } 
    } 
} 

感謝funcion提前

+0

爲什麼從Form類派生DBConnection類?這個類與表單無關 – Steve

回答

1

初始化內部FrmEditUser構造你的DBconnection類的類,因爲insert()方法不是靜態方法,所以你不經過實例化就不能訪問它

public FrmEditUser() 
{ 
    InitializeComponent(); 

    DBconnection connect = new DBconnection(); 
    connect.insert(); 
} 
相關問題