2011-05-17 5 views
0

quelqu'un peut-il m'aider.Lecture en lecture seule du fichier MDF. Windows app

J'ai essayé de déplacer le fichier MDF vers différents emplacements, mais je ne parviens toujours pas à mettre à jour la base de données. J'utilise Windows 7.

Voici mon code:

using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace TestDatabase 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     System.Data.SqlClient.SqlConnection con; 
     DataSet ds1; 
     System.Data.SqlClient.SqlDataAdapter da; 

     int MaxRows = 0; 
     int inc = 0; 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      con = new System.Data.SqlClient.SqlConnection(); 
      ds1 = new DataSet(); 
      con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\rebdog\\AppData\\MyWorkers.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; 
      con.Open(); 

      string sql = "SELECT * From tblWorkers"; 
      da = new System.Data.SqlClient.SqlDataAdapter(sql, con); 

      MessageBox.Show("database Open"); 

      da.Fill(ds1, "Workers"); 
      NavigateRecords(); 
      MaxRows = ds1.Tables["Workers"].Rows.Count; 

      con.Close(); 

      MessageBox.Show("database closed"); 
     } 

     private void btnSave_Click(object sender, EventArgs e) 
     { 
      System.Data.SqlClient.SqlCommandBuilder cb; 

      cb = new System.Data.SqlClient.SqlCommandBuilder(da); 

      DataRow dRow = ds1.Tables["Workers"].NewRow(); 

      dRow[1] = textBox1.Text; 
      dRow[2] = textBox2.Text; 
      dRow[3] = textBox3.Text; 

      ds1.Tables["Workers"].Rows.Add(dRow); 

      MaxRows = MaxRows + 1; 
      inc = MaxRows - 1; 

      da.Update(ds1,"Workers"); 
     } 
    } 
} 

Le code est d'un tutoriel, je dois obtenir ce travail avant d'ajouter une base de données à mon projet.

Merci les gars.

+0

Vous avez des erreurs? – Blazes

+0

Je voudrais attacher le fichier MDF à SQL Server Express que vous avez exécuté sur votre machine, et arrêtez d'utiliser le truc 'AttachDbFileName = ....; UserInstance = ....'. Une fois que vous l'avez attaché, vous pouvez vous connecter en utilisant 'server =. \ SQLExpress; database = MyWorkers; Integrated Security = SSPI;' et c'est tout ce dont vous avez besoin –

Répondre

1

Selon votre code (dans la chaîne de connexion) le fichier mdf doit être

C:\Users\rebdog\AppData\MyWorkers.mdf 

La connexion est configuré pour utiliser la sécurité intégrée, ce qui signifie qu'elle utilise vos fenêtres se connecter pour accéder à cette base de données. Donc, si vous avez des problèmes d'accès à la base de données, c'est peut-être parce qu'elle nécessite un autre compte d'utilisateur, ou parce que votre utilisateur n'a pas accès en lecture/écriture à ce dossier.

+0

\ est un caractère spécial, donc si je mets C: \ Users \ rebdog \ AppData \ MyWorkers.mdf j'obtiens des erreurs. J'ai vérifié les prémissions et ils sont tous capables de lire et d'écrire. – rebdog

+0

si vous mettez un '\' dans la chaîne de connexion, vous devez l'échapper pour que '\\' signifie que le chemin de la chaîne de connexion sera "C: \\ Users \\ rebdog \\ AppData \\ MyWorkers.mdf" –

+0

Eh bien pour une raison quelconque, il a juste commencé à travailler comme il est maintenant. Je dois aimer Windows 7 – rebdog