【问题标题】:Readonly database MDF file. Windows app只读数据库 MDF 文件。 Windows 应用程序
【发布时间】:2011-05-17 08:47:18
【问题描述】:

谁能帮帮我。

我尝试将 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");
        }
    }
}

代码来自教程,在将数据库添加到我的项目之前,我需要让它工作。

谢谢你们。

【问题讨论】:

  • 我会将 MDF 文件附加到您在计算机上运行的 SQL Server Express,并停止使用 AttachDbFileName=....;UserInstance=.... 的东西。附加后,您可以使用server=.\SQLExpress;database=MyWorkers;integrated security=SSPI; 连接到它,这就是您所需要的

标签: sql-server database readonly


【解决方案1】:

根据您的代码(在连接字符串中),mdf 文件应该在

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

连接设置为使用集成安全性,这意味着它使用您的 Windows 登录名来访问该数据库。因此,如果您在访问数据库时遇到问题,可能是因为它需要另一个用户帐户,或者因为您的用户没有对该文件夹的读/写访问权限。

【讨论】:

  • \ 是一个特殊字符,所以如果我输入 C:\Users\rebdog\AppData\MyWorkers.mdf 我会出错。我检查了权限,他们都可以读写。
  • 如果你在连接字符串中放了一个'\',你应该转义它,所以每个都是'\\',这意味着连接字符串中的路径将是 "C:\\Users\\rebdog\\ AppData\\MyWorkers.mdf"
  • 好吧,由于某种原因,它刚刚开始以现在的方式工作。一定要爱 Windows 7
猜你喜欢
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
相关资源
最近更新 更多