0

通常のSQL共通コマンドパラメータ、挿入、更新などを含む14のテーブルがあります。私のような初心者は、このようにメインクラスのすべてのメソッドを持っています...

namespace TestApp
{
 public partial class TestNamTxt : Form
 {
    private OleDbConnection myCon;

    public TestNamTxt()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
      myCon = new OleDbConnection();
      myCon.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C\:... 
                                 Database2.mdb")

      myCon.Open();
      ds1 = new DataSet();
      string sql = "SELECT * FROM Table1";
      da = new System.Data.OleDb.OleDbDataAdapter(sql,myCon);
      da.Fill(ds1, "Foo");
      myCon.Close();
   };

   private void Insertbtn_Click(object sender, EventArgs e)
   {
     OleDbCommand cmd = new OleDbCommand();
     cmd.CommandType = CommandType.Text;
     cmd.CommandText = "INSERT INTO Table1 (ID, Name)";
     cmd.Parameters.AddWithValue("@ID", IDTxt.Text);
     cmd.Parameters.AddWithValue("@Name", NameTxt.Text);
     cmd.Connection=myCon;   
     myCon.Open();
     cmd.ExecuteNonQuery();
     myCon.Close();
  }
}

上記のコードを別のクラスに配置し、Insertbtn メソッドで this メソッドを使用できますか? チュートリアルはありますか、またはおそらく誰かがこれを行う方法を示すことができますか? 私がここで与えた説明でそれが何と呼ばれているかわかりませんか? 前もって感謝します

4

3 に答える 3

2

できますよ。GetConnection と Insert を別のクラスに配置して (または Form のままにしておくこともできますが、これはお勧めしません)、次のように使用できます。

    public static OleDbConnection GetConnection()
    {
        var myCon = new OleDbConnection();
        myCon.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C\:... Database2.mdb";

        return myCon;
    }
    public static void Insert(string id, string name)
    {
        var con = GetConnection();
        OleDbCommand cmd = new OleDbCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "INSERT INTO Table1 (ID, Name)";
        cmd.Parameters.AddWithValue("@ID", id);
        cmd.Parameters.AddWithValue("@Name", name);
        cmd.Connection = con;
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }

    private void Insertbtn_Click(object sender, EventArgs e)
    {
        Insert(IDTxt.Text, NameTxt.Text);
    }

必要に応じて、メソッド パラメータとしてテーブル名を指定することもできます。

于 2013-03-29T15:14:54.570 に答える
1

私があなたの質問を正しく理解していれば、
あなたはこれを行うことができます. 基本的に、これに使用される用語である DAL(Data Access Layer) を使用しようとしています。

簡単です。上記のコードを別のクラスに配置し、このクラスでそのクラスのオブジェクトを作成して使用します。

public class DataClass
{
  public static bool AddEmp(string id, string name)
   {
     bool result;
     OleDbCommand cmd = new OleDbCommand();
     cmd.CommandType = CommandType.Text;
     cmd.CommandText = "INSERT INTO Table1 (ID, Name)";
     cmd.Parameters.AddWithValue("@ID", id);
     cmd.Parameters.AddWithValue("@name", name);
     cmd.Connection=myCon;   

     try
      {
        myCon.Open();
        cmd.ExecuteNonQuery();
        result = true;
      }
     catch
      {
         result = false;
      }

  myCon.Close();
  return result;  
}

次に、挿入機能で次のようにします

private void Insertbtn_Click(object sender, EventArgs e)
 {
    DataClass ob = new DataClass();
    bool returnResult = ob.AddEmp(IDtxt.txt, NameTxt.text)
    if(bool) // if result == true
     //dosomething
    else
    // do something
}

それが役に立てば幸い。

于 2013-03-29T15:16:07.030 に答える
0

TestNam クラスは Form クラスから派生しています。定義するフォーム イベント ハンドラーは、TestNam のメンバー関数である必要がありますが、この関数内では、フォームのアクティブなインスタンスへの参照を渡すなど、必要なことを行うことができます。

関数がフォーム クラスに固有のものである場合は、それらをクラスに配置します。それらが共有されている場合は、htem を別のオブジェクトに配置できます。

于 2013-03-29T15:20:41.000 に答える