2013-03-29 66 views
0

我有14桌,與平時常見的SQL命令參數,插入,更新等初學者,像我一樣,將在主類的所有方法,這樣......我可以從另一個類調用一個sql命令參數嗎?

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方法中使用此方法編碼上面的代碼?有沒有任何教程,或者有人可以演示如何可以完成?我不確定它在這裏給出的描述中所稱的是什麼?在此先感謝

回答

2

當然可以。你可以把的getConnection並插入到單獨的類(或者甚至離開表格,但我不建議這樣做),如下所示,並使用它們:

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

你也可以指定表名作爲方法的參數,如果你需要。

+0

我還建議一些其他的事情要做,例如。將連接字符串放入app.config文件等等 – realnero

+0

非常感謝,謝謝 – bucketblast

+0

@bucketblast不客氣!希望我幫助你。 – realnero

1

如果我已經正確理解你的問題
然後你可以做到這一點。 基本上你試圖使用DAL(數據訪問層)用於該術語,

以及其簡單, 地方上面的代碼到另一個類,然後讓那個類的一個對象在這個類並使用它。

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 
} 

希望它能幫助。

0

您的TestNam類是從Form類派生的。任何想要定義的表單事件處理程序都必須是TestNam的成員函數,但在此函數中,您可以執行自己想要的操作,包括將引用傳遞給表單的活動實例。

如果你的函數是特定於表單類的,將它們放在類中,如果它們是共享的,你可以把htem放在另一個對象中。

相關問題