2

私は実際に、Visual C# Express 2010 を使用して、SQL Server 2008 Express DB のデータを使用 (読み取り/書き込み) する Windows フォーム アプリケーションを開発しています。

SQL Server Management Studio (2008 Express) で DB を作成しました。インスタンスの名前が「TEST」であることを理解していますATLELAG786576\SQLEXPRESS 。DB の名前は「TEST」です。

SQL Server Management Studio (2008 Express) で自分の DB 'TEST' プロパティを見る: [ファイル] の下で、私は ( ATLE\bneveux) DB の所有者です

セキュリティ、ログイン、Mylogin (ATLE\bneveux) の下を見る

  • 私のデフォルトDBは「TEST」です
  • サーバーの役割は「public」+「sysadmin」
  • ユーザー マッピング DB 'TEST' ユーザー 'dbo' デフォルト スキーマ 'dbo'

私のC#アプリケーションでは

app.config:

<?xml version="1.0" encoding="utf-8" ?> <configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="connectionStringTestDb"
            connectionString="Data Source=ATLELAG786576\SQLEXPRESS;Initial Catalog=D:\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\TEST.mdf;Integrated Security=True;Connect Timeout=30;User Instance=False"
            providerName="System.Data.SqlClient" />
    </connectionStrings> </configuration>

dbConnection.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace SQLServerConnectionDemo
{
    class dbConnection
    {
        public static SqlConnection newCon;
        public static string connectionStringTestDb = ConfigurationManager.ConnectionStrings["connectionStringTestDb"].ConnectionString;

        public static SqlConnection GetConnection()
        {
            newCon = new SqlConnection(connectionStringTestDb);
            return newCon;
        }
    }
}

dbAccess.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace SQLServerConnectionDemo
{
    class dbAccess
    {
        SqlConnection conn;
        public dbAccess()
        {
            conn = dbConnection.GetConnection();
        }

        //Method insert new in tblEmployees
        public void addEmployee(string Id, string Name, string Email)
        {
            if (conn.State.ToString() == "Closed")
            {
                conn.Open();
            }
            SqlCommand newCmd = conn.CreateCommand();
            newCmd.Connection = conn;
            newCmd.CommandType = CommandType.Text;
            newCmd.CommandText = "INSERT INTO tblEmployees VALUES ('"+ Id +"','"+ Name +"','"+ Email +"')";
            newCmd.ExecuteNonQuery();
        }

    }
}

フォーム formEmployeeAdd.cs:

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

namespace SQLServerConnectionDemo
{
    public partial class formEmployeeAdd : Form
    {

        dbAccess access = new dbAccess();

        public formEmployeeAdd()
        {
            InitializeComponent();
        }

        private void btnInsert_Click(object sender, EventArgs e)
        {
            access.addEmployee(txtId.Text, txtName.Text, txtEmail.Text);
            MessageBox.Show("Data successfully added");
        }
    }
}

そして、このプロセスを実行しようとすると常に表示されるエラーメッセージは次のとおりです。

System.Data.SqlClient.SqlException (0x80131904): ログインによって要求されたデータベース "D:\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\TEST.mdf" を開けません。ログインに失敗しました。ユーザー 'ATLE\bneveux' のログインに失敗しました。

VS から DB を管理できるように、Visual C# 2010 Express でデータ ソースを実際に追加できなかったことに注意してください。常に次のエラー メッセージが表示されます。

物理ファイル "D:\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\TEST.mdf" を開けません。オペレーティング システム エラー 32: "32(Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus.)". ファイル D:\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\TEST.mdf の自動命名データベースをアタッチしようとして失敗しました。同じ名前のデータベースが存在するか、指定されたファイルを開くことができないか、ファイルが UNC 共有にあります。

4

1 に答える 1

1

交換してみる

Initial Catalog=D:\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\TEST.mdf

単純に

Initial Catalog=TEST
于 2012-11-19T10:57:15.430 に答える