2010-02-11 7 views
0

Comment utiliser ce code si nous allons utiliser la base de données de serveur SQL, car dans ce code, nous avons utilisé MS Access comme base de donnéesMS Access au serveur sql recherche

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

est ici le connectionstring

Jet OLEDB: global partielle en vrac O ps = 2; Jet OLEDB: Chemin de Registre =; Jet OLEDB: Mode de verrouillage de base de données = 0; Source de données = "J: \ 2009-2010 \ 1er semestre \ VC# \ Exemple \ WindowsApplication_Products \ PointOfSales.mdb"

+0

Suggestions: Ajouter les parties du code qui manquent et formater. Montrez comment vous vous connectez actuellement à Access. Dites-nous ce que vous avez essayé. –

+2

Je ne vois pas où vous utilisez Access dans ce code. –

+0

Jet OLEDB: Opérations globales partielles globales = 2; Jet OLEDB: Chemin de registre =; Jet OLEDB: Mode de verrouillage de base de données = 0; Source de données = "J: \ 2009-2010 \ 1er sem \ VC# \ Exemple \ WindowsApplication_Products \ PointOfSales. mdb " –

Répondre

1

serait abus total d'un serveur SQL pour implémenter un tel code contre un serveur. Mon C# est un peu rouillé, mais il semble que ce code parcourt toutes les lignes de productsDS1, comparant le "Pcode", "Desc" et "Prix" à ceux entrés dans la zone de texte. La bonne façon d'implémenter ceci est via une procédure stockée sur le SQL Server qui est passé ces trois valeurs et renvoie un jeu d'enregistrements d'enregistrement (s) correspondant (ou éventuellement un RecordID à utiliser dans un processus séparé de retreival) OU au moins pour former une instruction SQL pour récupérer les données (par exemple "SELECT * FROM productsDS1 where Pcode = '" & txtPcode.Text & "' AND Desc = '" & txtDesc.Text & "' AND Price = " & txtPrice.Text). Je recommanderais la première méthode puisque la seconde est sensible à l'injection SQL.

(Cette méthode aurait également été plus approprié contre le db d'accès.)

+0

@data jockey: J'ai formaté votre réponse pour la rendre plus lisible - j'espère que cela ne vous dérange pas :) –

+0

+1 Cependant, vous n'avez pas besoin d'utiliser des procédures stockées pour vous protéger contre l'injection SQL. Les requêtes paramétrées/les instructions préparées devraient résoudre le problème correctement. –