質問編集履歴

25 修正

hamaa

hamaa score 43

2017/02/06 16:49  投稿

C#とSQL文 mdfファイルのdataをSQLserverに追加したい SqlBulkCopyでロケールID違いのエラー
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
 2のパターンは何回もinsertするのでサーバーに負担かかりませんか?
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
    ★問題点★
        **[mdfデータベース名]**この部分
           ↓
        ①**[mdfデータベース名]**visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。(.mdfまで書く?)
         ②**[フルパス + mdfデータベース名]**(.mdfまで書く?)
        →ちょっと、やってみたがうまく行かず…
         ③プロバイダみたいなものが必要?
        →**[Provider=]**or**[Driver=]**???mdf用の書き方がいまいち分からない
   
    そもそもこのやり方でうまく行かないのか…
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;                    ← ここでエラーになってる
}
finally
{
conn.Close();
}
}
}
```
**tomatoさんのをコメントをみて ↑あきらめて…
**tamotoさんのをコメントをみて ↑あきらめて…
1/17追記 新解決策 SqlBulkCopy あと一歩で解決か!?汗。。**
```
public static void ExecuteCopy(string tableName)
       {
           using (var mdfcn = new SqlConnection(mdf接続文字列))
           using (var SQLcn = new SqlConnection(SQLserver接続文字))
           {
               mdfcn.Open();
               SQLcn.Open();
                                     
               var mdfsql = string.Format("SELECT * FROM [{0}]", tableName);
               var mdfcmd = new SqlCommand(mdfsql, mdfcn);
               using (var rd = mdfcmd.ExecuteReader())
               {
                   using (var bulk = new SqlBulkCopy(SQLcn))
                   {
                       bulk.BulkCopyTimeout = 10000;
                       bulk.DestinationTableName = string.Format("dbo.{0}",tableName);
                       bulk.WriteToServer(rd);   //← ここでエラー ロケールIDが
                         //追加情報:ソース列 'フィルード名' のロケール ID '1033' と
                              //ターゲット列 'フィルード名' のロケール ID '1041' は
                             //一致していません。
                   }
               }
           }
```
あと一歩なのかロケールIDが一致しないといわれる。
このやり方でSQLserver側の0fieldが mdf側になくても行けるのかがいまいち分かりませんが
ただ '1033'→英語 '1041'→日本語を指定出来るのかな… ?? またググってる最中です。
###2017/02/06追記
###2017/02/06追記  修正箇所
```
using (DataTable datatable = new DataTable())// 2017/02/06追記
{// 2017/02/06追記
   datatable.Load(rd);// 2017/02/06追記
   using (var bulk = new SqlBulkCopy(SQLcn))
   {
       bulk.BulkCopyTimeout = 10000;
       bulk.DestinationTableName = string.Format("dbo.{0}",tableName);
       bulk.WriteToServer(datatable);   //2017/02/06 書換
   }
}// 2017/02/06追記
```
```
tomatoさんのアドバイスで完璧にクリアできました。
  • C#

    10670 questions

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

24 修正

hamaa

hamaa score 43

2017/02/06 16:43  投稿

C#とSQL文 mdfファイルのdataをSQLserverに追加したい SqlBulkCopyでロケールID違いのエラー
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
 2のパターンは何回もinsertするのでサーバーに負担かかりませんか?
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
    ★問題点★
        **[mdfデータベース名]**この部分
           ↓
        ①**[mdfデータベース名]**visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。(.mdfまで書く?)
         ②**[フルパス + mdfデータベース名]**(.mdfまで書く?)
        →ちょっと、やってみたがうまく行かず…
         ③プロバイダみたいなものが必要?
        →**[Provider=]**or**[Driver=]**???mdf用の書き方がいまいち分からない
   
    そもそもこのやり方でうまく行かないのか…
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;                    ← ここでエラーになってる
}
finally
{
conn.Close();
}
}
}
```
**tomatoさんのをコメントをみて ↑あきらめて…
1/17追記 新解決策 SqlBulkCopy あと一歩で解決か!?汗。。**
```
public static void ExecuteCopy(string tableName)
       {
           using (var mdfcn = new SqlConnection(mdf接続文字列))
           using (var SQLcn = new SqlConnection(SQLserver接続文字))
           {
               mdfcn.Open();
               SQLcn.Open();
                                     
               var mdfsql = string.Format("SELECT * FROM [{0}]", tableName);
               var mdfcmd = new SqlCommand(mdfsql, mdfcn);
               using (var rd = mdfcmd.ExecuteReader())
               {
                   using (var bulk = new SqlBulkCopy(SQLcn))
                   {
                       bulk.BulkCopyTimeout = 10000;
                       bulk.DestinationTableName = string.Format("dbo.{0}",tableName);
                       bulk.WriteToServer(rd);   //← ここでエラー ロケールIDが
                         //追加情報:ソース列 'フィルード名' のロケール ID '1033' と
                              //ターゲット列 'フィルード名' のロケール ID '1041' は
                             //一致していません。
                   }
               }
           }
```
あと一歩なのかロケールIDが一致しないといわれる。
このやり方でSQLserver側の0fieldが mdf側になくても行けるのかがいまいち分かりませんが
ただ '1033'→英語 '1041'→日本語を指定出来るのかな… ?? またググってる最中です。
2017/02/06追記
###ヘディングのテキスト
```ここに言語を入力
###2017/02/06追記
```
using (DataTable datatable = new DataTable())// 2017/02/06追記
                   {// 2017/02/06追記
                       datatable.Load(rd);// 2017/02/06追記
using (var bulk = new SqlBulkCopy(SQLcn))
                   {
                       bulk.BulkCopyTimeout = 10000;
                       bulk.DestinationTableName = string.Format("dbo.{0}",tableName);
                       bulk.WriteToServer(datatable);   //2017/02/06 書換
                   }
{// 2017/02/06追記
    datatable.Load(rd);// 2017/02/06追記
    using (var bulk = new SqlBulkCopy(SQLcn))
   {
       bulk.BulkCopyTimeout = 10000;
       bulk.DestinationTableName = string.Format("dbo.{0}",tableName);
       bulk.WriteToServer(datatable);   //2017/02/06 書換
    }
}// 2017/02/06追記
```
  • C#

    10670 questions

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

23 完成

hamaa

hamaa score 43

2017/02/06 16:40  投稿

C#とSQL文 mdfファイルのdataをSQLserverに追加したい SqlBulkCopyでロケールID違いのエラー
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
 2のパターンは何回もinsertするのでサーバーに負担かかりませんか?
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
    ★問題点★
        **[mdfデータベース名]**この部分
           ↓
        ①**[mdfデータベース名]**visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。(.mdfまで書く?)
         ②**[フルパス + mdfデータベース名]**(.mdfまで書く?)
        →ちょっと、やってみたがうまく行かず…
         ③プロバイダみたいなものが必要?
        →**[Provider=]**or**[Driver=]**???mdf用の書き方がいまいち分からない
   
    そもそもこのやり方でうまく行かないのか…
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;                    ← ここでエラーになってる
}
finally
{
conn.Close();
}
}
}
```
**tomatoさんのをコメントをみて ↑あきらめて…
1/17追記 新解決策 SqlBulkCopy あと一歩で解決か!?汗。。**
```
public static void ExecuteCopy(string tableName)
       {
           using (var mdfcn = new SqlConnection(mdf接続文字列))
           using (var SQLcn = new SqlConnection(SQLserver接続文字))
           {
               mdfcn.Open();
               SQLcn.Open();
                                     
               var mdfsql = string.Format("SELECT * FROM [{0}]", tableName);
               var mdfcmd = new SqlCommand(mdfsql, mdfcn);
               using (var rd = mdfcmd.ExecuteReader())
               {
                   using (var bulk = new SqlBulkCopy(SQLcn))
                   {
                       bulk.BulkCopyTimeout = 10000;
                       bulk.DestinationTableName = string.Format("dbo.{0}",tableName);
                       bulk.WriteToServer(rd);   //← ここでエラー ロケールIDが
                         //追加情報:ソース列 'フィルード名' のロケール ID '1033' と
                              //ターゲット列 'フィルード名' のロケール ID '1041' は
                             //一致していません。
                   }
               }
           }
```
あと一歩なのかロケールIDが一致しないといわれる。
このやり方でSQLserver側の0fieldが mdf側になくても行けるのかがいまいち分かりませんが
ただ '1033'→英語 '1041'→日本語を指定出来るのかな… ?? またググってる最中です。
ただ '1033'→英語 '1041'→日本語を指定出来るのかな… ?? またググってる最中です。
2017/02/06追記
###ヘディングのテキスト
```ここに言語を入力
using (DataTable datatable = new DataTable())// 2017/02/06追記
                   {// 2017/02/06追記
                       datatable.Load(rd);// 2017/02/06追記
using (var bulk = new SqlBulkCopy(SQLcn))
                   {
                       bulk.BulkCopyTimeout = 10000;
                       bulk.DestinationTableName = string.Format("dbo.{0}",tableName);
                       bulk.WriteToServer(datatable);   //2017/02/06 書換
                   }
}// 2017/02/06追記
```
  • C#

    10670 questions

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

22 タイトル変更

hamaa

hamaa score 43

2017/01/19 10:37  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい (ロケールID違い!?)
C#とSQL文 mdfファイルのdataをSQLserverに追加したい SqlBulkCopyでロケールID違いのエラー
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1 名前1 電話1 メール1
LCno2 名前2 電話2 メール2
LCno3 名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1 名前1 電話1 メール1
All_No2 LCno2 名前2 電話2 メール2
All_No3 LCno3 名前3 電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
2のパターンは何回もinsertするのでサーバーに負担かかりませんか?
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```
★問題点★
**[mdfデータベース名]**この部分
①**[mdfデータベース名]**visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
→やってみたが駄目だった。(.mdfまで書く?)
②**[フルパス + mdfデータベース名]**(.mdfまで書く?)
→ちょっと、やってみたがうまく行かず…
③プロバイダみたいなものが必要?
→**[Provider=]**or**[Driver=]**???mdf用の書き方がいまいち分からない
そもそもこのやり方でうまく行かないのか…
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw; ← ここでエラーになってる
}
finally
{
conn.Close();
}
}
}
```
**tomatoさんのをコメントをみて ↑あきらめて…
1/17追記 新解決策 SqlBulkCopy あと一歩で解決か!?汗。。**
```
public static void ExecuteCopy(string tableName)
{
using (var mdfcn = new SqlConnection(mdf接続文字列))
using (var SQLcn = new SqlConnection(SQLserver接続文字))
{
mdfcn.Open();
SQLcn.Open();
var mdfsql = string.Format("SELECT * FROM [{0}]", tableName);
var mdfcmd = new SqlCommand(mdfsql, mdfcn);
using (var rd = mdfcmd.ExecuteReader())
{
using (var bulk = new SqlBulkCopy(SQLcn))
{
bulk.BulkCopyTimeout = 10000;
bulk.DestinationTableName = string.Format("dbo.{0}",tableName);
bulk.WriteToServer(rd); //← ここでエラー ロケールIDが
//追加情報:ソース列 'フィルード名' のロケール ID '1033' と
//ターゲット列 'フィルード名' のロケール ID '1041' は
//一致していません。
}
}
}
```
あと一歩なのかロケールIDが一致しないといわれる。
このやり方でSQLserver側の0fieldが mdf側になくても行けるのかがいまいち分かりませんが
ただ '1033'→英語 '1041'→日本語を指定出来るのかな… ?? またググってる最中です。
  • C#

    10670 questions

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

21 テスト

hamaa

hamaa score 43

2017/01/17 10:48  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい (ロケールID違い!?)
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
 2のパターンは何回もinsertするのでサーバーに負担かかりませんか?
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
    ★問題点★
        **[mdfデータベース名]**この部分
           ↓
        ①**[mdfデータベース名]**visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。(.mdfまで書く?)
         ②**[フルパス + mdfデータベース名]**(.mdfまで書く?)
        →ちょっと、やってみたがうまく行かず…
         ③プロバイダみたいなものが必要?
        →**[Provider=]**or**[Driver=]**???mdf用の書き方がいまいち分からない
   
    そもそもこのやり方でうまく行かないのか…
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;                    ← ここでエラーになってる
}
finally
{
conn.Close();
}
}
}
```
**tomatoさんのをコメントをみて
1/17追記 あと一歩で解決か!?汗。。**
**tomatoさんのをコメントをみて ↑あきらめて…
1/17追記 新解決策 SqlBulkCopy あと一歩で解決か!?汗。。**
```
public static void ExecuteCopy(string tableName)
       {
           using (var mdfcn = new SqlConnection(mdf接続文字列))
           using (var SQLcn = new SqlConnection(SQLserver接続文字))
           {
               mdfcn.Open();
               SQLcn.Open();
                                     
               var mdfsql = string.Format("SELECT * FROM [{0}]", tableName);
               var mdfcmd = new SqlCommand(mdfsql, mdfcn);
               using (var rd = mdfcmd.ExecuteReader())
               {
                   using (var bulk = new SqlBulkCopy(SQLcn))
                   {
                       bulk.BulkCopyTimeout = 10000;
                       bulk.DestinationTableName = string.Format("dbo.{0}",tableName);
                       bulk.WriteToServer(rd);   //← ここでエラー ロケールIDが
                         //追加情報:ソース列 'フィルード名' のロケール ID '1033' と
                              //ターゲット列 'フィルード名' のロケール ID '1041' は
                             //一致していません。
                   }
               }
           }
```
あと一歩なのかロケールIDが一致しないといわれる。
このやり方でSQLserver側の0fieldが mdf側になくても行けるのかがいまいち分かりませんが
ただ '1033'→英語 '1041'→日本語を指定出来るのかな… ?? またググってる最中です。
  • C#

    10670 questions

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

20 修正

hamaa

hamaa score 43

2017/01/17 10:27  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい (ロケールID違い!?)
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
 2のパターンは何回もinsertするのでサーバーに負担かかりませんか?
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
    ★問題点★
        **[mdfデータベース名]**この部分
           ↓
        ①**[mdfデータベース名]**visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。(.mdfまで書く?)
         ②**[フルパス + mdfデータベース名]**(.mdfまで書く?)
        →ちょっと、やってみたがうまく行かず…
         ③プロバイダみたいなものが必要?
        →**[Provider=]**or**[Driver=]**???mdf用の書き方がいまいち分からない
   
    そもそもこのやり方でうまく行かないのか…
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;                    ← ここでエラーになってる
}
finally
{
conn.Close();
}
}
}
```
**tomatoさんのをコメントをみて
1/17追記 あと一歩で解決か!?汗。。**
```
public static void ExecuteCopy(string tableName)
       {
           using (var mdfcn = new SqlConnection(mdf接続文字列))
           using (var SQLcn = new SqlConnection(SQLserver接続文字))
           {
               mdfcn.Open();
               SQLcn.Open();
                                     
               var mdfsql = string.Format("SELECT * FROM [{0}]", tableName);
               var mdfcmd = new SqlCommand(mdfsql, mdfcn);
               using (var rd = mdfcmd.ExecuteReader())
               {
                   using (var bulk = new SqlBulkCopy(SQLcn))
                   {
                       bulk.BulkCopyTimeout = 10000;
                       bulk.DestinationTableName = string.Format("dbo.{0}",tableName);
                       bulk.WriteToServer(rd);   //← ここでエラー ロケールIDが
                         //追加情報:ソース列 'フィルード名' のロケール ID '1033' と
                              //ターゲット列 'フィルード名' のロケール ID '1041' は
                             //一致していません。
                   }
               }
           }
```
あと一歩なのかロケールIDが一致しないといわれる。 このやり方で0fieldがなくても行けるのか…?
あと一歩なのかロケールIDが一致しないといわれる。
このやり方でSQLserver側の0fieldが mdf側になくても行けるのかがいまいち分かりませんが
ただ '1033'→英語 '1041'→日本語を指定出来るのかな… ?? またググってる最中です。
  • C#

    10670 questions

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

19 修正

hamaa

hamaa score 43

2017/01/17 10:23  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
 2のパターンは何回もinsertするのでサーバーに負担かかりませんか?
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
    ★問題点★
        **[mdfデータベース名]**この部分
           ↓
        ①**[mdfデータベース名]**visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。(.mdfまで書く?)
         ②**[フルパス + mdfデータベース名]**(.mdfまで書く?)
        →ちょっと、やってみたがうまく行かず…
         ③プロバイダみたいなものが必要?
        →**[Provider=]**or**[Driver=]**???mdf用の書き方がいまいち分からない
   
    そもそもこのやり方でうまく行かないのか…
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;                    ← ここでエラーになってる
}
finally
{
conn.Close();
}
}
}
```
**tomatoさんのをコメントをみて
1/17追記 あと一歩で解決か!?汗。。**
```
public static void ExecuteCopy(string tableName)
       {
           using (var mdfcn = new SqlConnection(mdf接続文字列))
           using (var SQLcn = new SqlConnection(SQLserver接続文字))
           {
               mdfcn.Open();
               SQLcn.Open();
                                     
               var mdfsql = string.Format("SELECT * FROM [{0}]", tableName);
               var mdfcmd = new SqlCommand(mdfsql, Diacn);
               var mdfcmd = new SqlCommand(mdfsql, mdfcn);
               using (var rd = mdfcmd.ExecuteReader())
               {
                   using (var bulk = new SqlBulkCopy(SQLcn))
                   {
                       bulk.BulkCopyTimeout = 10000;
                       bulk.DestinationTableName = string.Format("dbo.{0}",tableName);
                       bulk.WriteToServer(rd);   //← ここでエラー ロケールIDが
                         //追加情報:ソース列 'フィルード名' のロケール ID '1033' と
                              //ターゲット列 'フィルード名' のロケール ID '1041' は
                             //一致していません。
                   }
               }
           }
```
あと一歩なのかロケールIDが一致しないといわれる。 このやり方で0fieldがなくても行けるのか…?
ただ '1033'→英語 '1041'→日本語を指定出来るのかな… ?? またググってる最中です。
  • C#

    10670 questions

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

18 修正

hamaa

hamaa score 43

2017/01/17 10:22  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
 2のパターンは何回もinsertするのでサーバーに負担かかりませんか?
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
    ★問題点★
        **[mdfデータベース名]**この部分
           ↓
        ①**[mdfデータベース名]**visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。(.mdfまで書く?)
         ②**[フルパス + mdfデータベース名]**(.mdfまで書く?)
        →ちょっと、やってみたがうまく行かず…
         ③プロバイダみたいなものが必要?
        →**[Provider=]**or**[Driver=]**???mdf用の書き方がいまいち分からない
   
    そもそもこのやり方でうまく行かないのか…
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;                    ← ここでエラーになってる
}
finally
{
conn.Close();
}
}
}
```
**tomatoさんのをコメントをみて
1/17追記 あと一歩で解決か!?汗。。**
```
public static void ExecuteCopy(string tableName)
       {
           using (var mdfcn = new SqlConnection(mdf接続文字列))
           using (var SQLcn = new SqlConnection(SQLserver接続文字))
           {
               Diacn.Open();
               mdfcn.Open();
               SQLcn.Open();
                                     
               var mdfsql = string.Format("SELECT * FROM [{0}]", tableName);
               var mdfcmd = new SqlCommand(mdfsql, Diacn);
               using (var rd = mdfcmd.ExecuteReader())
               {
                   using (var bulk = new SqlBulkCopy(SQLcn))
                   {
                       bulk.BulkCopyTimeout = 10000;
                       bulk.DestinationTableName = string.Format("dbo.{0}",tableName);
                       bulk.WriteToServer(rd);   //← ここでエラー ロケールIDが
                         //追加情報:ソース列 'フィルード名' のロケール ID '1033' と
                              //ターゲット列 'フィルード名' のロケール ID '1041' は
                             //一致していません。
                   }
               }
           }
```
あと一歩なのかロケールIDが一致しないといわれる。 このやり方で0fieldがなくても行けるのか…?
ただ '1033'→英語 '1041'→日本語を指定出来るのかな… ?? またググってる最中です。
  • C#

    10670 questions

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

17 修正

hamaa

hamaa score 43

2017/01/17 10:22  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
 2のパターンは何回もinsertするのでサーバーに負担かかりませんか?
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
    ★問題点★
        **[mdfデータベース名]**この部分
           ↓
        ①**[mdfデータベース名]**visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。(.mdfまで書く?)
         ②**[フルパス + mdfデータベース名]**(.mdfまで書く?)
        →ちょっと、やってみたがうまく行かず…
         ③プロバイダみたいなものが必要?
        →**[Provider=]**or**[Driver=]**???mdf用の書き方がいまいち分からない
   
    そもそもこのやり方でうまく行かないのか…
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;                    ← ここでエラーになってる
}
finally
{
conn.Close();
}
}
}
```
**tomatoさんのをコメントをみて
1/17追記 あと一歩で解決か!?汗。。**
```
public static void ExecuteCopy(string tableName)
       {
           //using (var connSrc = new OracleConnection(Settings.Default.OracleConnectionString))  
             
           using (var mdfcn = new SqlConnection(mdf接続文字列))
           using (var SQLcn = new SqlConnection(SQLserver接続文字))
           {
               Diacn.Open();
               SQLcn.Open();
                                     
               var mdfsql = string.Format("SELECT * FROM [{0}]", tableName);
               var mdfcmd = new SqlCommand(mdfsql, Diacn);
               using (var rd = mdfcmd.ExecuteReader())
               {
                   using (var bulk = new SqlBulkCopy(SQLcn))
                   {
                       bulk.BulkCopyTimeout = 10000;
                       bulk.DestinationTableName = string.Format("dbo.{0}",tableName);
                       bulk.WriteToServer(rd);   //← ここでエラー ロケールIDが
                         //追加情報:ソース列 'フィルード名' のロケール ID '1033' と
                              //ターゲット列 'フィルード名' のロケール ID '1041' は
                             //一致していません。
                   }
               }
           }
```
あと一歩なのかロケールIDが一致しないといわれる。 このやり方で0fieldがなくても行けるのか…?
ただ '1033'→英語 '1041'→日本語を指定出来るのかな… ?? またググってる最中です。
  • C#

    10670 questions

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

16 追記

hamaa

hamaa score 43

2017/01/17 10:20  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
 2のパターンは何回もinsertするのでサーバーに負担かかりませんか?
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
    ★問題点★
        **[mdfデータベース名]**この部分
           ↓
        ①**[mdfデータベース名]**visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。(.mdfまで書く?)
         ②**[フルパス + mdfデータベース名]**(.mdfまで書く?)
        →ちょっと、やってみたがうまく行かず…
         ③プロバイダみたいなものが必要?
        →**[Provider=]**or**[Driver=]**???mdf用の書き方がいまいち分からない
   
    そもそもこのやり方でうまく行かないのか…
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;                    ← ここでエラーになってる
}
finally
{
conn.Close();
}
}
}
```
###tomatoさんのをコメントをみて 1/17追記 あと一歩で解決か!?汗。。
**tomatoさんのをコメントをみて
1/17追記 あと一歩で解決か!?汗。。**
```
public static void ExecuteCopy(string tableName)
       {
           //using (var connSrc = new OracleConnection(Settings.Default.OracleConnectionString))
           
           using (var mdfcn = new SqlConnection(mdf接続文字列))
           using (var SQLcn = new SqlConnection(SQLserver接続文字))
           {
               Diacn.Open();
               SQLcn.Open();
                                     
               var mdfsql = string.Format("SELECT * FROM [{0}]", tableName);
               var mdfcmd = new SqlCommand(mdfsql, Diacn);
               using (var rd = mdfcmd.ExecuteReader())
               {
                   using (var bulk = new SqlBulkCopy(SQLcn))
                   {
                       bulk.BulkCopyTimeout = 10000;
                       bulk.DestinationTableName = string.Format("dbo.{0}",tableName);
                       bulk.WriteToServer(rd);   //← ここでエラー ロケールIDが
//追加情報:ソース列 'フィルード名' のロケール ID '1033' とターゲット列 'フィルード名' のロケール ID '1041' は一致していません。
                          //追加情報:ソース列 'フィルード名' のロケール ID '1033' と
                              //ターゲット列 'フィルード名' のロケール ID '1041' は
                              //一致していません。
                   }
               }
           }
```
```
あと一歩なのかロケールIDが一致しないといわれる。 このやり方で0fieldがなくても行けるのか…?
ただ '1033'→英語 '1041'→日本語を指定出来るのかな… ?? またググってる最中です。
  • C#

    10670 questions

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

15 追記

hamaa

hamaa score 43

2017/01/17 10:16  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
 2のパターンは何回もinsertするのでサーバーに負担かかりませんか?
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
    ★問題点★
        **[mdfデータベース名]**この部分
           ↓
        ①**[mdfデータベース名]**visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。(.mdfまで書く?)
         ②**[フルパス + mdfデータベース名]**(.mdfまで書く?)
        →ちょっと、やってみたがうまく行かず…
         ③プロバイダみたいなものが必要?
        →**[Provider=]**or**[Driver=]**???mdf用の書き方がいまいち分からない
   
    そもそもこのやり方でうまく行かないのか…
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;                    ← ここでエラーになってる
}
finally
{
conn.Close();
}
}
}
```  
###tomatoさんのをコメントをみて 1/17追記 あと一歩で解決か!?汗。。  
```  
public static void ExecuteCopy(string tableName)  
       {  
           //using (var connSrc = new OracleConnection(Settings.Default.OracleConnectionString))  
             
           using (var mdfcn = new SqlConnection(mdf接続文字列))  
           using (var SQLcn = new SqlConnection(SQLserver接続文字))  
           {  
               Diacn.Open();  
               SQLcn.Open();  
                                       
               var mdfsql = string.Format("SELECT * FROM [{0}]", tableName);  
               var mdfcmd = new SqlCommand(mdfsql, Diacn);  
               using (var rd = mdfcmd.ExecuteReader())  
               {  
                   using (var bulk = new SqlBulkCopy(SQLcn))  
                   {  
                       bulk.BulkCopyTimeout = 10000;  
                       bulk.DestinationTableName = string.Format("dbo.{0}",tableName);  
                       bulk.WriteToServer(rd);    //← ここでエラー ロケールIDが   
//追加情報:ソース列 'フィルード名' のロケール ID '1033' とターゲット列 'フィルード名' のロケール ID '1041' は一致していません。  
                   }  
 
               }  
 
           }  
```
  • C#

    10670 questions

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

14 テスト

hamaa

hamaa score 43

2017/01/16 20:17  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
 2のパターンは何回もinsertするのでサーバーに負担かかりませんか?  
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
    ★問題点★
        **[mdfデータベース名]**この部分
           ↓
        ①**[mdfデータベース名]**visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。(.mdfまで書く?)
         ②**[フルパス + mdfデータベース名]**(.mdfまで書く?)
        →ちょっと、やってみたがうまく行かず…
         ③プロバイダみたいなものが必要?
        →**[Provider=]**or**[Driver=]**???mdf用の書き方がいまいち分からない
   
    そもそもこのやり方でうまく行かないのか…
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;                    ← ここでエラーになってる
}
finally
{
conn.Close();
}
}
}
```
  • C#

    10670 questions

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

13 書き直し

hamaa

hamaa score 43

2017/01/16 20:11  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
    ★問題点★
        **[mdfデータベース名]**この部分
           ↓
        ①visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        ①**[mdfデータベース名]**visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。(.mdfまで書く?)
         ②**[フルパス + mdfデータベース名]**(.mdfまで書く?)
        →ちょっとちやってみます。
        →ちょっと、やってみたがうまく行かず…
         ③プロバイダみたいなものが必要?
        →**[Provider=]**or**[Driver=]**???mdf用の書き方がいまいち分からない
       
     そもそもこのやり方でうまく行かないのか…  
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;
throw;                     ← ここでエラーになってる
}
finally
{
conn.Close();
}
}
}
```
  • C#

    10670 questions

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

12 テスト

hamaa

hamaa score 43

2017/01/16 20:08  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM **[mdfデータベース名].**テーブル名 WHERE 条件のあるフィールド = 何らか条件"
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
    ###★問題点
    ★問題点★
        **[mdfデータベース名]**この部分
           ↓
        ①visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。(.mdfまで書く?)
         ②[フルパス + mdfデータベース名](.mdfまで書く?)
         ②**[フルパス + mdfデータベース名]**(.mdfまで書く?)
        →ちょっとちやってみます。
         ③プロバイダみたいなものが必要?
        →[Provider=]or[Driver=]???mdf用の書き方がいまいち分からない
        →**[Provider=]**or**[Driver=]**???mdf用の書き方がいまいち分からない
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;
}
finally
{
conn.Close();
}
}
}
```
  • C#

    10670 questions

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

11 テスト

hamaa

hamaa score 43

2017/01/16 20:05  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
SELECT * FROM **[mdfデータベース名].**テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
        [mdfデータベース名]この部分
     ###★問題点
        **[mdfデータベース名]**この部分
           ↓
        ①visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。
        →やってみたが駄目だった。(.mdfまで書く?)
         ②[フルパス + mdfデータベース名](.mdfまで書く?)
        →ちょっとちやってみます。
         ③プロバイダみたいなものが必要?
        →[Provider=]or[Driver=]???mdf用の書き方がいまいち分からない
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;
}
finally
{
conn.Close();
}
}
}
```
  • C#

    10670 questions

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

10 見やすく

hamaa

hamaa score 43

2017/01/16 19:57  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 追加したいmdfファイルのデータ
```
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括??
・2のパターン それともinsert文をC#で書いて一行つつでなら… (LINQも使える??)
・1のパターン SQL文で一括
・2のパターン insert文をC#で書いて一行つつでなら… (LINQも使える??)
今回は1のパターンを思考しています。。
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
        [mdfデータベース名]この部分
           ↓
        ①visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。
         ②[フルパス + mdfデータベース名](.mdfまで書く?)
        →ちょっとちやってみます。
         ③プロバイダみたいなものが必要?
        →[Provider=]or[Driver=]???mdf用の書き方がいまいち分からない
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;
}
finally
{
conn.Close();
}
}
}
```
  • C#

    10670 questions

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

9 見やすく

hamaa

hamaa score 43

2017/01/16 19:55  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
↓例 テーブルはこうなってほしい (追加したいmdfファイルのデータ)
↓例 追加したいmdfファイルのデータ
```
ローカルmdfファイルのテーブル  
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
```
↓SQLserverのテーブル 追加後 (0_fieldは自動採番(オートナンバー)field)
↓SQLserverのテーブル 追加後こうなってほしい (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括??
・2のパターン それともinsert文をC#で書いて一行つつでなら… (LINQも使える??)
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
        [mdfデータベース名]この部分
           ↓
        ①visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。
         ②[フルパス + mdfデータベース名](.mdfまで書く?)
        →ちょっとちやってみます。
         ③プロバイダみたいなものが必要?
        →[Provider=]or[Driver=]???mdf用の書き方がいまいち分からない
↓つくったINERT文をこれで
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;
}
finally
{
conn.Close();
}
}
}
```
  • C#

    10670 questions

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

8 見やすく

hamaa

hamaa score 43

2017/01/16 19:54  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
例 テーブルはこうなってほしい
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↓例 テーブルはこうなってほしい (追加したいmdfファイルのデータ)
```
ローカルmdfファイルのテーブル
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
↓追加後
SQLserverのテーブル
```
↓SQLserverのテーブル 追加後 (0_fieldは自動採番(オートナンバー)field)
```
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
0_field
は自動採番(オートナンバー)field
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
共有サーバーに更新したいのですが…
・1のパターン SQL文?一括??
・2のパターン それともinsert文を一行つつでなら
       C#で書いて掛けそうですが… LINQも使える??
///1のパターンで考えた場合////(ごめんなさい2のパターンまで頭が回ってません。。。)
```
この様に共有サーバーに更新したいのですが…
2つ浮かびましたが…
・1のパターン SQL文で一括??
・2のパターン それともinsert文をC#で書いて一行つつでなら… (LINQも使える??)
↓ 1のパターンで考えた場合 (ごめんなさい2のパターンまで頭が回ってません。。。)
```
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
        [mdfデータベース名]この部分
           ↓
        ①visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。
         ②[フルパス + mdfデータベース名](.mdfまで書く?)
        →ちょっとちやってみます。
         ③プロバイダみたいなものが必要?
        →[Provider=]or[Driver=]???mdf用の書き方がいまいち分からない
 
↓つくったINERT文をこれで  
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;
}
finally
{
conn.Close();
}
}
}
```
  • C#

    10670 questions

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

7 更新

hamaa

hamaa score 43

2017/01/16 19:47  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
違うPCのSQLserverのテーブルに追加したいです。。
例 テーブルはこうなってほしい
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
ローカルmdfファイルのテーブル
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
↓追加後
SQLserverのテーブル
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
0_field
は自動採番(オートナンバー)field
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
共有サーバーに更新したいのですが…
・1のパターン SQL文?一括??
・2のパターン それともinsert文を一行つつでなら
       C#で書いて掛けそうですが…
       C#で書いて掛けそうですが… LINQも使える??
///1のパターンで考えた場合////(ごめんなさい2のパターンまで頭が回ってません。。。)
```
 
SQL接続文字 = @"Data Source=…"
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM mdfデータベース名.テーブル名 WHERE 条件のあるフィールド = 何らか条件"
SELECT * FROM [mdfデータベース名].テーブル名 WHERE 条件のあるフィールド = 何らか条件"
```     
        [mdfデータベース名]この部分
           ↓
        ①visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
        →やってみたが駄目だった。
         ②ここの部分がフルパスだけでいい?
         ②[フルパス + mdfデータベース名](.mdfまで書く?)
        →ちょっとちやってみます。
         ③プロバイダみたいなものが必要?
        →???
        →[Provider=]or[Driver=]???mdf用の書き方がいまいち分からない
```
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
```
↓SQL接続クラス
```
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;
}
finally
{
conn.Close();
}
}
}
```
  • C#

    10670 questions

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

6 意味が分かりやすくした。

hamaa

hamaa score 43

2017/01/16 18:44  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。
いろいろググっていますがピンと来ないで苦しんでいます。
素人ですみません。(質問を2人の意見を聞いて再編集しました。)
素人なので変な風に理解してるかもしれません!よろしくお願いします。
ローカルにあるmdfファイルのテーブルごと
SQLserverのテーブルに追加したいです。。
違うPCのSQLserverのテーブルに追加したいです。。
例 テーブルはこうなってほしい 
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
ローカルmdfファイルのテーブル
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
↓追加後
SQLserverのテーブル
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
0_field
は自動採番(オートナンバー)field
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓  
共有サーバーに更新したいのですが…  
・1のパターン SQL文?一括??  
・2のパターン それともinsert文を一行つつでなら  
        C#で書いて掛けそうですが…  
共有サーバーに更新したいのですが…
SQL文?一括?? それとも insert文を一行つつでなら
C#で書いて掛けそうですが…
SqlDataAdapterとか?
SqlConnectionでかな?
のやり方がいまいち分からないので…
///1のパターンで考えた場合////(ごめんなさい2のパターンまで頭が回ってません。。。)
```
追記
失礼しました。
INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM mdfファイルのテーブル名.[ココ?] WHERE 条件のあるフィールド = 何らか条件
SQL接続文字 = @"Data Source=…"
だとは 思うのですが… 接続部分の書き方?
[ココ?]と 書いたところ 後は通常時のSQLサーバーのconnectionの書き方で良いのでしょうか?
INSERT文 ="INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM mdfデータベース名.テーブル名 WHERE 条件のあるフィールド = 何らか条件"
            ↓
         ①visual studioで追加してるから、mdfファイル名(サーバー名でだけいい?)
         →やってみたが駄目だった。
         ②ここの部分がフルパスだけでいい?
         →ちょっとちやってみます。
         ③プロバイダみたいなものが必要?
         →???
SQL接続.ExecuteNonQuery(INSERT文, SQL接続文字);
↓SQL接続クラス
public class SQL接続
{
public static void ExecuteNonQuery(string sql, string 接続文字列)
{
using (SqlCommand command = new SqlCommand())
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = conn.ConnectionString = 接続文字列;
// トランザクションを開始します。
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
command.CommandText = sql;
command.Connection = conn;
command.Transaction = transaction;
command.ExecuteNonQuery();
//トランザクションをコミットします。
transaction.Commit();
}
catch (System.Exception)
{
//トランザクションをロールバックします。
transaction.Rollback();
throw;
}
finally
{
conn.Close();
}
}
}
```
  • C#

    10670 questions

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

5 追記

hamaa

hamaa score 43

2017/01/13 15:57  投稿

C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。
いろいろググっていますがピンと来ないで苦しんでいます。
ローカルにあるmdfファイルのテーブルごと
SQLserverのテーブルに追加したいです。。
ローカルmdfファイルのテーブル
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
↓追加後
SQLserverのテーブル
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
0_field
は自動採番(オートナンバー)field
共有サーバーに更新したいのですが…
SQL文?一括?? それとも insert文を一行つつでなら
C#で書いて掛けそうですが…
SqlDataAdapterとか?
SqlConnectionでかな?
のやり方がいまいち分からないので…
のやり方がいまいち分からないので…
追記
失礼しました。
INSERT INTO SQLserverのテーブル 名 (A_field,B_field,C_field,D_field)
SELECT * FROM mdfファイルのテーブル名.[ココ?] WHERE 条件のあるフィールド = 何らか条件
だとは 思うのですが… 接続部分の書き方?
[ココ?]と 書いたところ 後は通常時のSQLサーバーのconnectionの書き方で良いのでしょうか?
  • C#

    10670 questions

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

4 付け加えました。

hamaa

hamaa score 43

2017/01/12 20:20  投稿

C# ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
C#とSQL文 ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。
いろいろググっていますがピンと来ないで苦しんでいます。
ローカルにあるmdfファイルのテーブルごと
SQLserverのテーブルに追加したいです。。
ローカルmdfファイルのテーブル
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
↓追加
↓追加後
SQLserverのテーブル
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
0_field
は自動採番(オートナンバー)field
共有サーバーに更新したいのですが…
SQL文?一括?? それとも insert文を一行つつでなら
C#で書いて掛けそうですが…
SqlDataAdapterとか?
SqlConnectionでかな?
のやり方がいまいち分からないので…
  • C#

    10670 questions

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

3 付け加えました。

hamaa

hamaa score 43

2017/01/12 20:19  投稿

C# ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。
いろいろググっていますがピンと来ないで苦しんでいます。
ローカルにあるmdfファイルのテーブルごと
SQLserverのテーブルに追加したいです。。
ローカルmdfファイルのテーブル
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
↓追加
SQLserverのテーブル
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
0_field
は自動採番(オートナンバー)field
は自動採番(オートナンバー)field
共有サーバーに更新したいのですが… 
SQL文?一括?? それとも insert文を一行つつでなら
C#で書いて掛けそうですが… 
SqlDataAdapterとか?
SqlConnectionでかな?
のやり方がいまいち分からないので… 
  • C#

    10670 questions

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

2 見やすくした

hamaa

hamaa score 43

2017/01/11 17:13  投稿

C# ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。
いろいろググっていますがピンと来ないで苦しんでいます。
ローカルにあるmdfファイルのテーブルごと
SQLserverのテーブルに追加したいです。。
ローカルmdfファイルのテーブル
-----------------------------------  
A_field B_field C_field D_field
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
-----------------------------------
↓追加
SQLserverのテーブル
-----------------------------------  
↓オートナンバー  
0_field A_field B_field C_field D_field
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
-----------------------------------
このように一括してテーブルを更新する方法を教えてください。
0_field
は自動採番(オートナンバー)field
  • C#

    10670 questions

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

1 見やすくした

hamaa

hamaa score 43

2017/01/11 17:11  投稿

C# ローカルにあるmdfファイルのテーブルごと SQLserverに追加したい
素人ですみません。
いろいろググっていますがピンと来ないで苦しんでいます。
ローカルにあるmdfファイルのテーブルごと
SQLserverのテーブルに追加したいです。。
ローカルmdfファイルのテーブル
-----------------------------------  
A_field B_field C_field D_field
LCno1   名前1 電話1 メール1
LCno2 名前2 電話2 メール2
LCno3 名前3 電話3 メール3
LCno1  名前1 電話1 メール1
LCno2  名前2 電話2 メール2
LCno3  名前3 電話3 メール3
-----------------------------------
↓追加
 
SQLserverのテーブル
-----------------------------------  
↓オートナンバー
0_field A_field B_field C_field D_field
All_No1 LCno1   名前1 電話1 メール1
All_No2 LCno2 名前2 電話2 メール2
All_No3 LCno3 名前3 電話3 メール3
All_No1 LCno1  名前1   電話1 メール1
All_No2 LCno2  名前2   電話2 メール2
All_No3 LCno3  名前3   電話3 メール3
-----------------------------------
このように一括してテーブルを更新する方法を教えてください。
  • C#

    10670 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る