こんにちは↓
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.
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。