0

私はwinアプリケーションを持っていますが、データベースをアプリエラーに接続したいときにこのエラーが発生します:

ファイルC:\ Users \ Aren \ Desktop \ DB\REGISTRATION.mdfの自動名前付きデータベースをアタッチしようとして失敗しました。同じ名前のデータベースが存在するか、指定されたファイルを開くことができないか、UNC共有にあります。

public class DALBase
{
    protected SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\\Users\\Aren\\Desktop\\DB\\REGISTRATION.mdf;integrated Security=true ; User Instance=True");
    protected SqlCommand com = new SqlCommand();
    protected SqlDataAdapter da = new SqlDataAdapter();
    protected DataSet ds = new DataSet();

}

public DataSet GetStudent(string filter)
    {

        DataSet dset = new DataSet();
        using (SqlCommand cmd = new SqlCommand())
        {
            string cmdstring = string.Format("Select * from {0}"
               , Common.Data.Student.Table_Name);


            if (!string.IsNullOrEmpty(filter)) cmdstring += " where " + filter;


            cmd.CommandText = cmdstring;
            cmd.Connection = this.con;
            cmd.Connection.Open();
            cmd.CommandText = cmdstring;
            cmd.Connection = this.con;
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            adapter.Fill(dset, Common.Data.Student.Table_Name);
            return dset;
        }
    }

注:また、ソリューションに3つのプロジェクトがあり、DALBASEメソッドとGETSTUDENTメソッドが1つのプロジェクトにあり、他のプロジェクトからそれらを呼び出してデータを取得しています。

4

1 に答える 1

0

過去にこの問題に遭遇したことがあると思います。私の状況では、実行時にデータベースをロードしてSQL ServerにアタッチするアプリケーションをVisual Studioにロードしました。どういうわけか、アプリケーションを閉じたときにデータベースが SQL SERVER から切り離されず、次にアプリを実行したときに、同じメッセージではないにしても同様のメッセージが表示されました。

SSMS がインストールされている場合は、.\SQLEXPRESS インスタンスを開いて、Registration*.mdf ファイルが添付されているかどうかを確認します。または、SSMS を使用していない場合は、コマンド ラインを開いて入力します...

sqlcmd -S .\SQLEXPRESS -Q "select name from sys.databases"

これにより、そのインスタンスに接続されている/オンラインになっているすべてのデータベースが表示されます。

お役に立てれば。

于 2013-03-08T13:37:30.393 に答える