こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

SQL VC#でのDBアプリ作成方法について

Visual C# 2010 Express(WPFアプリケーション)とSQL Server 2012 Expressでツール(データベースアプリケーション)を作成していますが,いまいち作り方を理解しておらず合っているのかわからないので,教えていただきたいです。

作成しているツールは会社の課内で使用します。
最終的には課内サーバーに保存してあるDBファイルに各社員のパソコンから作成したツール経由でDBへ読み書きします。ツールの開発は私のパソコンで行います。

課内サーバはWindowsServer2010でIPアドレスを仮に\\11.22.33.444とします。
各社員のパソコンはWin7でIPアドレスを仮に\\11.22.33.445とします。

なお本文では下記のように略して記載します。
SQL Server 2012 Express:sqlserver
SQL Server Management Studio Express 2012:SSMS
Visual C# 2010 Express:VC#


■私が行った作成手順
※サーバで操作
(1)サーバにsqlserverとSSMSをインストール
(2)KANAISQLという名前でインスタンスを作成。Windows認証。
(3)SSMSのセキュリティでログインユーザの中に自分のドメインユーザ名を登録
(4)SSMSで「E:\…DATA」の中に:データベースを作成(BOOKDB.mdf)。テーブル「BOOKInfo」を作成。ついでに1レコード作成。
(5)SSMSでBOOKDB.mdfをデタッチ
(6)BOOKDB.mdfを「E:\…booksDB」にコピペ


※開発PCで操作
(7)パソコンにVC#,sqlserver,LocalDB,SSMSをインストール
(8)SQLEXPRESSという名前でインスタンスを作成。Windows認証。
(9)VC#でWPFアプリケーションを新規作成
(10)[データ]メニューの[新しいデータ ソースの追加]→[データベース]→[データセット]→[\\11.22.33.444\…booksDB\BOOKDB.mdf]を指定→テスト接続を実行→接続OK
→「ローカルにデータをコピーしますか?」といった画面で「OK」をクリック
(11)データソースナビゲーションパネルから「BOOKInfo」をDataGridを指定してユーザーフォームにドラッグ&ドロップしてバインド。
(12)デバッグしてみる→正常にレコードが表示された。
(13)Datasetをデザイナーから編集でInsertクエリを作成
(14)ユーザフォームにボタンを追加してInsertクエリとUpdateクエリを実装
(15)デバッグとリビルドしてexeを実行してみる。→ツール上では正常に表示+テーブル追加された。
(16)DBファイルを確認してみた。開発PC内のデバッグフォルダリリースフォルダ内にある「BOOKDB.mdf」は更新されていた。

※サーバで操作
(17)サーバの[E:\…booksDB\BOOKDB.mdf]が更新されているか確認してみた。
→更新されていない。(6)の時から変更なし。

■わからないこと
1.ツールからサーバのDBへデータの変更を反映させるためにはどうしたらよいのでしょうか。
2.またツール完成後に各社員がこのツールを使用する場合は,全員sqlserverとLocalDBをパソコンにインストールしなければならないものなのでしょうか。

詳しい方ご教授御願いいたします。

投稿日時 - 2012-08-02 01:16:00

QNo.7622729

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

1>
App.config の connectionString にサーバのDBを指定する

2>
~.exe.config の connectionString にサーバのDBを指定する

投稿日時 - 2012-08-02 12:37:08

補足

「データベースが読み取り専用」の件,解決しました。
ありがとうございました!

投稿日時 - 2012-08-05 17:05:26

お礼

todo36様

回答ありがとうございました。
教えていただいたとおりApp.config と~.exe.config の connectionString にサーバのDBを指定してみました。

結果,どうやらサーバに更新しようとしているみたいなのですが,「~.MDF"を更新できませんでした。データベースが読み取り専用です。」と表示されエラーになってしまいます。

インターネットで調べてみたところ,MDFファイルが格納されているフォルダのプロパティで「読み取り専用」を外すことで問題解決すると書いてあったのでやってみたのですがダメでした。

どうやら何回「読み取り専用」のチェックを外して適用しても再度プロパティを開くとまた「読み取り専用」になってしまいます。
どうしたら読み取り専用を外すことができるのでしょうか。

もしくは「データベースが読み取り専用」というのはMDFファイルおよびそのフォルダが読み取り専用ということではないのでしょうか。

ご存知でしたらご教授お願いします。

投稿日時 - 2012-08-02 23:53:25