Файл MDF базы данных только для чтения. Приложение для Windows

#sql-server #database #readonly

#sql-сервер #База данных #только для чтения

Вопрос:

кто-нибудь может мне помочь.

Я попытался переместить файл MDF в разные места, но мне по-прежнему не удается обновить базу данных. Я использую Windows 7.

Вот мой код:

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

Код взят из руководства, мне нужно заставить это работать, прежде чем добавлять базу данных в свой проект.

Спасибо вам, ребята.

Комментарии:

1. Я бы прикрепил файл MDF к SQL Server Express, который запущен на вашем компьютере, и прекратил бы использовать AttachDbFileName=....;UserInstance=.... материал. После того, как вы подключили его, вы можете подключиться к нему с помощью server=.SQLExpress;database=MyWorkers;integrated security=SSPI; , и это все, что вам нужно

Ответ №1:

Согласно вашему коду (в строке подключения) файл mdf должен находиться в

 C:UsersrebdogAppDataMyWorkers.mdf
  

Соединение настроено на использование встроенной безопасности, что означает, что для доступа к этой базе данных используется ваш логин Windows. Итак, если у вас возникли проблемы с доступом к базе данных, это может быть связано с тем, что для этого требуется другая учетная запись пользователя или потому, что у вашего пользователя нет доступа на чтение / запись к этой папке.

Комментарии:

1. — это специальный символ, поэтому, если я помещу C:UsersrebdogAppDataMyWorkers.mdf я получаю ошибки. Я проверил предварительные версии, и все они способны читать и записывать.

2. если вы поместите » в строку подключения, вы должны экранировать его, чтобы каждый из них был ‘\’, что означает, что путь в строке подключения будет «C:\Users\rebdog\AppData\MyWorkers.mdf »

3. Ну, по какой-то причине он только начал работать так, как сейчас. Должен любить Windows 7