質問編集履歴

6

タグの追加

2020/04/26 06:24

投稿

HoroHoro0316
HoroHoro0316

スコア8

test CHANGED
File without changes
test CHANGED
File without changes

5

タグの追加

2020/04/26 06:23

投稿

HoroHoro0316
HoroHoro0316

スコア8

test CHANGED
File without changes
test CHANGED
File without changes

4

文章訂正

2020/04/25 06:59

投稿

HoroHoro0316
HoroHoro0316

スコア8

test CHANGED
File without changes
test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- 下記に`sqlSample`へのリンクを書いてますので、押しますと、
29
+ 下記に`sqlSample.ejs`へのリンクを書いてますので、押しますと、
30
30
 
31
31
  ![sqlSample](027cb2afe531f3030a76850ca211ad2b.png)
32
32
 
@@ -34,7 +34,7 @@
34
34
 
35
35
  こうなります。
36
36
 
37
- 私なりに調べてみましたが、変数contentがDBを参照したデータを引っ張ってこれてないのだと思います。
37
+ 私なりに少し調べたのですが、変数contentがDBを参照したデータを引っ張ってこれてないのだと思います。
38
38
 
39
39
 
40
40
 

3

情報追加

2020/04/25 06:54

投稿

HoroHoro0316
HoroHoro0316

スコア8

test CHANGED
File without changes
test CHANGED
@@ -272,6 +272,68 @@
272
272
 
273
273
 
274
274
 
275
+ - views/sqlSample.ejs
276
+
277
+ ```ejs
278
+
279
+ <!DOCTYPE html>
280
+
281
+ <html lang="ja">
282
+
283
+ <head>
284
+
285
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
286
+
287
+ <title><%= title %></title>
288
+
289
+ <link rel='stylesheet' href='/stylesheets/style.css' />
290
+
291
+ </head>
292
+
293
+ <body>
294
+
295
+ <h1><%= title %></h1>
296
+
297
+ <div role="main">
298
+
299
+ <table>
300
+
301
+ <tr>
302
+
303
+ <th>製品コード</th>
304
+
305
+ <th>製品名</th>
306
+
307
+ <th>単価</th>
308
+
309
+ </tr>
310
+
311
+ <% content.forEach(function (value, key) { %>
312
+
313
+ <tr>
314
+
315
+ <td><%= value.ProductsCode %></td>
316
+
317
+ <td><%= value.ProductsName %></td>
318
+
319
+ <td><%= value.UnitPrice %></td>
320
+
321
+ </tr>
322
+
323
+ <% }); %>
324
+
325
+ </table>
326
+
327
+ </div>
328
+
329
+ </body>
330
+
331
+ </html>
332
+
333
+ ```
334
+
335
+
336
+
275
337
  ...すみません、この辺りにつきましては他サイトの情報を参考にして記述させていただきました。
276
338
 
277
339
  一応、そちらのURLもここに乗せます。

2

個人情報部分の修正

2020/04/25 06:43

投稿

HoroHoro0316
HoroHoro0316

スコア8

test CHANGED
File without changes
test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  VScodeのターミナルで`npm start`してlocalhostを起動すると、
18
18
 
19
- !![npm start](9b8b8286ab8062c8b96f09223acd13b6.png)
19
+ ![npm start](e8861115199a890712abfe5225d1e157.png)
20
20
 
21
21
 
22
22
 

1

情報追加

2020/04/25 06:40

投稿

HoroHoro0316
HoroHoro0316

スコア8

test CHANGED
File without changes
test CHANGED
@@ -1,46 +1,70 @@
1
- ###はじめに
2
-
3
-
4
-
5
- `Node.js` + `Express` + `SQL Server`を使って、DBのものを一覧表示するページを作成したかったのですが、なにやらエラーが出てしまい、自分では原因が全く分からなかったため質問させて頂きます。
6
-
7
-
8
-
9
- ###起きている問題
10
-
11
-
12
-
13
- `npm start`によってlocalhostを起動させて表示すると、このような感じになってしまいます。
14
-
15
-
16
-
17
- ![image](4d10d05138fa732eba69239a44d38f6a.png)
18
-
19
-
20
-
21
- ※一部は故意で塗りつぶしてます。
22
-
23
-
24
-
25
- ###現状
26
-
27
-
28
-
29
- 一応、現状はこようになっおります
30
-
31
-
32
-
33
- ![image](913fdb4b271aad4c36e85cc8bd119db5.png)
34
-
35
-
36
-
37
- 基本的は`Express generator`コマンドで生成した感じです。
38
-
39
-
40
-
41
-
42
-
43
- `sqlSample.js`
1
+ はじめに
2
+
3
+ ---
4
+
5
+
6
+
7
+ Node.js + Express + SQL Serverによってデータベースに接続し、そこに登録されているデータを一覧で表示するようなページを作成したかったのですが、上手くデータを引っ張ってこれずに詰まってしまいました。
8
+
9
+
10
+
11
+ 現状
12
+
13
+ ---
14
+
15
+
16
+
17
+ VScodeのターミナルで`npm start`してlocalhostを起動すると、
18
+
19
+ !![npm start](9b8b8286ab8062c8b96f09223acd13b6.png)
20
+
21
+
22
+
23
+ これは正常に表示されます。
24
+
25
+ ![top](a698ce21728f3b5237842730c2273d7e.png)
26
+
27
+
28
+
29
+ 下記に`sqlSample`へリンクを書いてますので、押しますと、
30
+
31
+ ![sqlSample](027cb2afe531f3030a76850ca211ad2b.png)
32
+
33
+
34
+
35
+ こうなります。
36
+
37
+ 私なり調べてみましたが、変数contentがDBを参照したデータを引っ張ってこれてないのだと思います。
38
+
39
+
40
+
41
+ 本題
42
+
43
+ ---
44
+
45
+
46
+
47
+ すみません、ここからが本題になります。
48
+
49
+ フォルダ構成等を下記に示していきます。長くなりますが宜しくお願いします。
50
+
51
+
52
+
53
+ どうなっているか
54
+
55
+ ---
56
+
57
+
58
+
59
+ - フォルダ構成
60
+
61
+ 基本的には`Express generator`コマンドによって生成してます。こんな感じです。
62
+
63
+ ![folder](f42334fc2467fc7785218c797627229f.png)
64
+
65
+
66
+
67
+ - routes/index.js
44
68
 
45
69
  ```js
46
70
 
@@ -50,6 +74,42 @@
50
74
 
51
75
 
52
76
 
77
+ /* GET home page. */
78
+
79
+ router.get('/', function(req, res, next) {
80
+
81
+ res.render('index', { title: 'Express' });
82
+
83
+ });
84
+
85
+
86
+
87
+ router.get('/sqlSample', function(req, res, next) {
88
+
89
+ res.render('sqlSample', { title: 'sqlSample', content: content});
90
+
91
+ });
92
+
93
+
94
+
95
+ module.exports = router;
96
+
97
+ ```
98
+
99
+
100
+
101
+ - routes/sqlSample.js
102
+
103
+
104
+
105
+ ```js
106
+
107
+ var express = require('express');
108
+
109
+ var router = express.Router();
110
+
111
+
112
+
53
113
  // Connectionを定義する
54
114
 
55
115
  var Connection = require('tedious').Connection;
@@ -60,7 +120,7 @@
60
120
 
61
121
  var config = {
62
122
 
63
- server: 'localhost', // IPアドレスかサーバー名を指定する。
123
+ server: 'localhost',
64
124
 
65
125
  authentication: {
66
126
 
@@ -68,9 +128,9 @@
68
128
 
69
129
  options: {
70
130
 
71
- userName: 'admin', // 接続ユーザー名を指定する。
72
-
73
- password: 'xxxxx'
131
+ userName: 'admin',
132
+
133
+ password: 'xxxxx' // 伏せてます
74
134
 
75
135
  }
76
136
 
@@ -80,7 +140,7 @@
80
140
 
81
141
  encrypt: true,
82
142
 
83
- database: 'Training01' // データベース名を指定する。
143
+ database: 'Training01'
84
144
 
85
145
  }
86
146
 
@@ -94,22 +154,16 @@
94
154
 
95
155
  var connection = new Connection(config);
96
156
 
97
- var content = []; // DBからselectした結果を格納する変数
157
+ var content = [];
98
-
99
-
100
-
101
- // DB接続した際のイベントハンドラ
158
+
159
+
102
160
 
103
161
  connection.on('connect', function (err) {
104
162
 
105
163
  if (err) {
106
164
 
107
- // ERROR - SQL Serer connect error.
108
-
109
165
  console.log('SQL Serer connect error.(' + err + ')');
110
166
 
111
- // 終了
112
-
113
167
  process.exit();
114
168
 
115
169
  }
@@ -122,10 +176,6 @@
122
176
 
123
177
 
124
178
 
125
- // DB接続を終了した際のイベントハンドラ
126
-
127
- // DB接続を切断した後に画面を描写する
128
-
129
179
  connection.on('end', function () {
130
180
 
131
181
  console.log("disconnected");
@@ -140,12 +190,8 @@
140
190
 
141
191
 
142
192
 
143
- // SQLを発行する関数
144
-
145
193
  function executeStatement() {
146
194
 
147
- // 発行するSQLを記載する
148
-
149
195
  request = new Request("SELECT * FROM ProductsMaster with (NOLOCK)", function (err) {
150
196
 
151
197
  if (err) {
@@ -158,9 +204,7 @@
158
204
 
159
205
 
160
206
 
161
- var result = {}; // SQLの結果を行ごとにオブジェクトに格納する。
207
+ var result = {};
162
-
163
- // SQLの行ごとに実行するイベントハンドラ
164
208
 
165
209
  request.on('row', function (columns) {
166
210
 
@@ -186,10 +230,6 @@
186
230
 
187
231
 
188
232
 
189
- // SQLのリクエスト完了時のイベントハンドラ。
190
-
191
- // コネクションをクローズしないとDBにいらないプロセスが残るので、コネクションをクローズする。
192
-
193
233
  request.on('requestCompleted', function () {
194
234
 
195
235
  console.log('requestCompleted');
@@ -200,7 +240,7 @@
200
240
 
201
241
 
202
242
 
203
- // DBへSQLを発行する。
243
+
204
244
 
205
245
  connection.execSql(request);
206
246
 
@@ -218,116 +258,50 @@
218
258
 
219
259
 
220
260
 
221
- `sqlSample.ejs`
261
+ - routes/app.js
222
-
262
+
223
- ```ejs
263
+ ```js
224
-
225
- <!DOCTYPE html>
264
+
226
-
227
- <html lang="ja">
228
-
229
- <head>
230
-
231
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
232
-
233
- <title><%= title %></title>
234
-
235
- <link rel='stylesheet' href='/stylesheets/style.css' />
265
+ var sqlSample = require('./routes/sqlSample');
236
-
237
- </head>
266
+
238
-
239
- <body>
267
+
240
-
268
+
241
- <h1><%= title %></h1>
269
+ app.use('/sqlSample', sqlSample);
242
-
243
- <div role="main">
244
-
245
- <table>
246
-
247
- <tr>
248
-
249
- <th>製品コード</th>
250
-
251
- <th>製品名</th>
252
-
253
- <th>単価</th>
254
-
255
- </tr>
256
-
257
- <% content.forEach(function (value, key) { %>
258
-
259
- <tr>
260
-
261
- <td><%= value.ProductsCode %></td>
262
-
263
- <td><%= value.ProductsName %></td>
264
-
265
- <td><%= value.UnitPrice %></td>
266
-
267
- </tr>
268
-
269
- <% }); %>
270
-
271
- </table>
272
-
273
- </div>
274
-
275
- </body>
276
-
277
- </html>
278
-
279
-
280
270
 
281
271
  ```
282
272
 
283
273
 
284
274
 
285
- `routes/app.js`
286
-
287
- ```
288
-
289
- const sqlSample = require('./routes/sqlSample');
290
-
291
-
292
-
293
- app.use('/sqlSample', sqlSample);
275
+ ...すみません、この辺りにつきましては他サイトの情報を参考にして記述させていただきました。
294
-
295
-
296
-
297
- ```
276
+
298
-
299
-
300
-
301
- ###参考したもの
277
+ 一応、そちらのURLもここ乗せます。
302
-
303
-
304
-
305
- - Node.js Expressフレームワークを使用してSQL Serverに接続する(ページ作成)
278
+
306
-
279
+
280
+
307
- `https://qiita.com/t_skri/items/2742dc7603c5c39156bf`
281
+ [Node.js Expressフレームワークを使用してSQL Serverに接続する(ページ作成)](https://qiita.com/t_skri/items/2742dc7603c5c39156bf#)
282
+
283
+
284
+
308
-
285
+ 環境
286
+
309
-
287
+ ---
288
+
310
-
289
+ - Windows10 Home 64bit
290
+
311
- - Node.js Expressフレームワークを使用してSQL Serverに接続する(準備作業)
291
+ - Microsoft SQL Server 2019
312
-
313
- `https://qiita.com/t_skri/items/8d69c423042e310434d0`
292
+
314
-
315
-
316
-
317
- すみません、一応、私が参考にしたものも記載しておきます。
293
+ - Node.js - v12.16.1
294
+
318
-
295
+ - npm - 6.13.4
296
+
319
-
297
+ - Express - 4.16.1
320
-
321
-
322
-
298
+
299
+
300
+
323
- ###最後に
301
+ 最後に
302
+
324
-
303
+ ---
325
-
326
-
304
+
327
- 上手情報載せられているか不安ですが、質問に答えて頂けると非常に助かります。
305
+ ご回答ださ方にはご面倒おけいたしますが、答えくださると助かります。
328
-
329
- 情報等が足りてなかった場合はお教えしていただけると助かります。
306
+
330
-
331
-
332
-
333
- お手数おかけしますが宜しくお願いします。
307
+ お手数おかけします。よろしくお願いいたします。