2010-02-11 108 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