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

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

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

DataSetは、ADO.NETアーキテクチャのコンポーネントです。データベースから取得したレコードをメモリ領域に格納するクラスを指します。データの保持やテーブル間のリレーション・制約といった保持も可能です。

C#

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

Q&A

解決済

3回答

4640閲覧

SQL Serverで実行していたinsert文をdataTableを使って同じ内容のデータを作りたい。C#

DENQ

総合スコア19

DataSet

DataSetは、ADO.NETアーキテクチャのコンポーネントです。データベースから取得したレコードをメモリ領域に格納するクラスを指します。データの保持やテーブル間のリレーション・制約といった保持も可能です。

C#

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

0グッド

0クリップ

投稿2016/10/19 06:16

編集2016/10/19 09:02

###前提・実現したいこと
SQLで実行していたinsert文をdataTableを使って同じ内容のデータを作りたい。

INSERT INTO [table1] ([ID], [colmun1], [colmun2], [colmun3], [colmun4], [colmun5], [colmun6], [colmun7], [colmun8]) VALUES (0,0,0,0,0,0,0,0,0), (1,1,0,0,0,0,0,0,0), (2,0,2,0,0,0,0,0,0), (3,1,2,0,0,0,0,0,0), (4,0,0,3,0,0,0,0,0), (5,1,0,3,0,0,0,0,0), (6,0,2,3,0,0,0,0,0), (7,1,2,3,0,0,0,0,0), (8,0,0,0,4,0,0,0,0), (9,1,0,0,4,0,0,0,0), (10,0,2,0,4,0,0,0,0), (11,1,2,0,4,0,0,0,0), (12,0,0,3,4,0,0,0,0), . . . (251,1,2,0,4,5,6,7,8), (252,0,0,3,4,5,6,7,8), (253,1,0,3,4,5,6,7,8), (254,0,2,3,4,5,6,7,8), (255,1,2,3,4,5,6,7,8);

上記のinsert文をC#で配列等を使ってdatatableに追加していきたいと考えています。
###該当のソースコード

DataSet dataset = new DataSet(); DataTable dt = new DataTable("Table1"); dt.Columns.Add("ID"); dt.Columns.Add("colmun1"); dt.Columns.Add("colmun2"); dt.Columns.Add("colmun3"); dt.Columns.Add("colmun4"); dt.Columns.Add("colmun5"); dt.Columns.Add("colmun6"); dt.Columns.Add("colmun7"); dt.Columns.Add("colmun8"); int[] Array = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 }; //8bit分回す(255回) for (int i = 0; i < 0xFF; i++) { var dRow = dt.NewRow(); dRow[0] = Array[i]; for (int j = 0; j < 8; j++) { //ここからの処理が不明… if ((i >= j) & 1 == 1) { //二進数で表示した時に0の時は0を代入。 //0でなければArrayの数字を各dRowに入れたいのですがその処理の仕方が不明 //以下、暫定処理 dRow[1] = Array[j]; dRow[2] = Array[j]; dRow[3] = Array[j]; dRow[4] = Array[j]; dRow[5] = Array[j]; dRow[6] = Array[j]; dRow[7] = Array[j]; dRow[8] = Array[j]; dRow[9] = Array[j]; } } TBuiTable.Rows.Add(dRow); }

駄文で申し訳ございませんが、ご教授の程よろしくお願いします。

二進数で表示した時に0の時は0を代入。
0でなければArrayの数字を各dRowに入れたいのですがその処理の仕方が不明

###補足情報(言語/FW/ツール等のバージョンなど)
C#
.net frameWork 3.5

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2016/10/19 08:07

もしかして、SQLもDataTableも関係なく 数値を2進数に変換した際の各桁の値を知りたいだけでしょうか。
DENQ

2016/10/19 08:29

そういうことではないです。解決策を回答に乗せたので見れば私がしたかった事がわかると思います。質問のinsert文で作れる表と同じ表をdatatableで作成する事が目的でした。
退会済みユーザー

退会済みユーザー

2016/10/20 06:31

解決された前に書いたもので入れ違いになってしまっておりました。 完了した件に書くのも何ですが、私が上に書いたように質問されていればすぐその答えが得られていたと思いますよ。
guest

回答3

0

自己解決

自己解決しました。

DataSet dataset = new DataSet(); DataTable dt = new DataTable("Table1"); dt.Columns.Add("ID"); dt.Columns.Add("colmun1"); dt.Columns.Add("colmun2"); dt.Columns.Add("colmun3"); dt.Columns.Add("colmun4"); dt.Columns.Add("colmun5"); dt.Columns.Add("colmun6"); dt.Columns.Add("colmun7"); dt.Columns.Add("colmun8"); int[] Array = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 }; //8bit分回す(255回) for (int i = 0; i < 0xFF; i++) { //整数を2進数に変換 //※ 1 = 10000000 //※ 2 = 01000000 string convertBit = Convert.ToString(i, 2).PadRight(8, '0'); var dRow = dt.NewRow(); dRow[0] = i; for (int s = 0; s < convertBit.Length; s++) { string st = convertBit[s].ToString(); if (st == "0") { dRow[s + 1] = 0; } else { dRow[s + 1] = Array[s]; } } dt.Rows.Add(dRow); }

この方法でinsert文と同じテーブルを作ることができました。
PadLeftではなくPadRightするとこがpointでした。

投稿2016/10/19 08:05

DENQ

総合スコア19

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

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

0

sqlがテキストファイルから読むイメージでしょうか。
sqlの書き方に自由度がなく(=定型)、文法間違いなどもない前提でしたら
fgets sscanf またはfscanf でセパレータ間のデータをよみとったらいかがでしょうか。

char str[] = "ともじ 1978.03.22 生まれ 23才"; /* 大嘘 */

char name[20]; int year,month,day,age; sscanf(str,"%s %d.%d.%d 生まれ %d",name,&year,&month,&day,&age);

http://www9.plala.or.jp/sgwr-t/lib/sscanf.html より

投稿2016/10/19 07:59

katsuya141

総合スコア367

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

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

0

投稿2016/10/19 06:39

編集2016/10/19 06:41
Orlofsky

総合スコア16415

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

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

DENQ

2016/10/19 06:55

SQL Serverを使う事なくC#上だけで解決したいので、せっかくですがこの方法ではなく、bit演算子などを使ってうまくdataTableを作成したいと考えています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問