質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

3465閲覧

SQL Server 2014 Express のmdf ファイルに書き込みできない

hamaa

総合スコア45

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2016/10/27 05:31

編集2016/10/27 05:55

こんにちは↓
https://teratail.com/questions/46898
↑ここを元に書き換えをしてみました。
SQLserverからテーブルをローカルのmdfファイルに書き込みたくて

Visual Studio 2015で C#(WPF)
mdfファイル(SQL Server 2014 Express) にinsert文で書き込みしようとすると

private void 更新() { string MDF接続文字 = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\mylocal.mdf;Integrated Security=True"; string SQL接続文字 = "Data Source='IPアドレス';Initial Catalog='サーバー名';Persist Security Info=True;User ID='アカウント';Password='パスワード'"; SqlDataReader SQLreader; using (SqlConnection MDFcn = new SqlConnection(MDF接続文字), SQLcn = new SqlConnection(SQL接続文字)) { try{SQLcn.Open();}catch(System.Exception ex) {System.Console.WriteLine(ex.Message);return;} MDFcn.Open(); using (SqlCommand SQLcmd = new SqlCommand("SELECT * FROM テーブル", SQLcn)) { using (SQLreader = SQLcmd.ExecuteReader()) { if(SQLreader.HasRows) { using (SqlCommand MDFcmd = new SqlCommand("DELETE FROM テーブル", MDFcn)) { int num = MDFcmd.ExecuteNonQuery(); Console.WriteLine(num); System.Diagnostics.Debug.WriteLine(num); int mycolum = 0; List<string> listFieldName = new List<string>(); foreach (DataRow myRow in SQLreader.GetSchemaTable().Rows) { //フィールド名のリスト化 string FieldName = (string)myRow["ColumnName"].ToString(); listFieldName.Add(FieldName); 設定表.Columns[mycolum++].Header = FieldName; //パラメーターの生成 SqlDbType myType = (SqlDbType)myRow["ProviderType"]; MDFcmd.Parameters.Add(FieldName, myType); } Array arrayFields = listFieldName.ToArray(); string myFieldNames = String.Join(", ", listFieldName.ToArray()); string myFieldValue = String.Join(", @", listFieldName.ToArray()); MDFcmd.CommandText = "INSERT INTO テーブル(" + myFieldNames + ") VALUES(@" + myFieldValue + ")"; System.Diagnostics.Debug.WriteLine(SQLreader.FieldCount); while(SQLreader.Read()) { //全フィールドの値をパラメーターにセットする for (int myindex = 0; myindex < listFieldName.Count; ++myindex) { MDFcmd.Parameters[myindex].Value = SQLreader[myindex]; } //INSERT文を発行する MDFcmd.ExecuteNonQuery();//←ここでエラーが出る。 System.Diagnostics.Debug.WriteLine(MDFcmd.CommandText); } } } } } SQLcn.Close(); MDFcn.Close(); } }

エラー内容
追加情報:Failed to update database "C:\MYLOCAL.MDF" because the database is read-only.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

自己解決?しました。
プロジェクトファイルからコピーして別の場所に保存すると読取専用になってしまうようでした。

投稿2016/10/27 08:30

hamaa

総合スコア45

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

英文ですが、
Failed to update database because the database is read-only.

コードは </> で囲んでください。

投稿2016/10/27 05:50

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hamaa

2016/10/27 06:00

ありがとうございます。直しました。
Orlofsky

2016/10/27 06:32

Failed to update database because the database is read-only. の内容は試しましたか? 英語が苦手なら翻訳サイト(精度は悪いですが)を利用してください。 https://translate.google.com/
hamaa

2016/10/27 07:04

読み取り専用なのはわかるんですが… visualstudio 2015 でオブジェクトエクスプローラーから 読み取り専用になっているのも確認しましたが… 変えられるってサイトで書いてありましたが、右クリックしてプロパティを触ろうとしても変更できませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問