2010-02-11 151 views
0

如何,如果我們要使用SQL Server數據庫使用此代碼,因爲在此代碼,我們使用的MS Access作爲數據庫MS訪問SQL Server搜索

private void btnSearch_Click(object sender, System.EventArgs e) { 
    String pcode = txtPcode.Text; 
    int ctr = productsDS1.Tables[0].Rows.Count; 
    int x; 
    bool found = false; 

    for (x = 0; x<ctr; x++) { 
    if (productsDS1.Tables[0].Rows[x][0].ToString() == pcode) { 
     found = true; 
     break; 
    } 
    } 

    if (found == true) { 
    txtPcode.Text = productsDS1.Tables[0].Rows[x][0].ToString(); 
    txtDesc.Text = productsDS1.Tables[0].Rows[x][1].ToString(); 
    txtPrice.Text = productsDS1.Tables[0].Rows[x][2].ToString(); 
    } else { 
    MessageBox.Show("Record Not Found"); 
    } 

    private void btnNew_Click(object sender, System.EventArgs e) { 
    int cnt = productsDS1.Tables[0].Rows.Count; 
    string lastrec = productsDS1.Tables[0].Rows[cnt][0].ToString(); 
    int newpcode = int.Parse(lastrec) + 1; 

    txtPcode.Text = newpcode.ToString(); 
    txtDesc.Clear(); 
    txtPrice.Clear(); 
    txtDesc.Focus(); 

這裏的的ConnectionString

噴氣OLEDB:全局部分批量Ø ps = 2; Jet OLEDB:Registry Path =; Jet OLEDB:Database Locking Mode = 0; Data Source =「J:\ 2009-2010 \ 1st sem \ VC#\ Sample \ WindowsApplication_Products \ PointOfSales.mdb」

+0

建議:添加代碼是缺少零件和格式化。顯示您當前如何連接到Access。告訴我們你的嘗試。 – 2010-02-11 04:52:26

+2

我沒有看到你在這個代碼中使用Access。 – 2010-02-11 04:54:12

+0

Jet OLEDB:Global Partial Bulk Ops = 2; Jet OLEDB:Registry Path =; Jet OLEDB:Database Locking Mode = 0; Data Source =「J:\ 2009-2010 \ 1st sem \ VC#\ Sample \ WindowsApplication_Products \ PointOfSales。 mdb「 – 2010-02-11 05:01:07

回答

1

It將完全濫用SQL Server來針對服務器實現這樣的代碼。我的C#有點生疏,但它看起來像代碼遍歷productsDS1的每一行,比較「Pcode」,「Desc」和「Price」與輸入到文本框中的代碼。

實現此目的的正確方法是通過SQL Server上的存儲過程傳遞這三個值並返回匹配記錄的記錄集(或可能在單獨的複製過程中使用的RecordID) )或至少形成一個SQL語句來檢索數據(即"SELECT * FROM productsDS1 where Pcode = '" & txtPcode.Text & "' AND Desc = '" & txtDesc.Text & "' AND Price = " & txtPrice.Text)。我會推薦第一種方法,因爲第二種方法容易受到SQL注入的影響。

(這種方法也將是對Access數據庫比較合適。)

+0

@data jockey:我已經格式化了你的答案,使它更具可讀性 - 希望你不要介意:) – 2010-03-22 08:38:01

+0

+1但是,您不需要使用存儲過程來防止SQL注入。參數化查詢/準備語句應該很好地解決問題。 – 2010-03-22 08:39:34