teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2015/09/09 00:24

投稿

sho_cs
sho_cs

スコア3541

answer CHANGED
@@ -1,1 +1,41 @@
1
- PostgreSQLであれば多次元配列を扱える型が存在するので都度行追加で対応できます。
1
+ PostgreSQLであれば多次元配列を扱える型が存在するので都度行追加で対応できます。
2
+
3
+ ---
4
+ 登録・参照は以下の様な感じで可能です。
5
+ ```sql
6
+ CREATE TABLE postmd
7
+ (
8
+ id serial NOT NULL,
9
+ matrix integer[][]
10
+ )
11
+ ```
12
+
13
+ ```c#
14
+ using (var con = new NpgsqlConnection(connectionString))
15
+ {
16
+ var value = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
17
+ con.Open();
18
+ var insert = new NpgsqlCommand(@"INSERT INTO postmd (matrix) VALUES (:v)", con);
19
+ insert.Parameters.Add(new NpgsqlParameter("v", value));
20
+ insert.ExecuteNonQuery();
21
+
22
+ var select = new NpgsqlCommand(@"SELECT id,matrix FROM postmd", con);
23
+ var dr = select.ExecuteReader();
24
+ while (dr.Read())
25
+ {
26
+ Console.WriteLine("=============");
27
+ Console.WriteLine("id = {0}", dr[0]);
28
+ var matrix = (int[,])dr[1];
29
+
30
+ for (int i = 0; i < matrix.GetLength(0); i++)
31
+ {
32
+ for (int j = 0; j < matrix.GetLength(1); j++)
33
+ {
34
+ Console.Write(matrix[i, j]);
35
+ }
36
+ Console.WriteLine();
37
+ }
38
+ Console.WriteLine("=============");
39
+ }
40
+ }
41
+ ```