equal
deleted
inserted
replaced
17 */ |
17 */ |
18 package info.globalcode.sql.dk; |
18 package info.globalcode.sql.dk; |
19 |
19 |
20 import info.globalcode.sql.dk.batch.Batch; |
20 import info.globalcode.sql.dk.batch.Batch; |
21 import info.globalcode.sql.dk.configuration.DatabaseDefinition; |
21 import info.globalcode.sql.dk.configuration.DatabaseDefinition; |
|
22 import info.globalcode.sql.dk.formatting.ColumnsHeader; |
22 import info.globalcode.sql.dk.formatting.Formatter; |
23 import info.globalcode.sql.dk.formatting.Formatter; |
23 import java.sql.Connection; |
24 import java.sql.Connection; |
24 import java.sql.DriverManager; |
25 import java.sql.DriverManager; |
25 import java.sql.PreparedStatement; |
26 import java.sql.PreparedStatement; |
26 import java.sql.ResultSet; |
27 import java.sql.ResultSet; |
36 private Connection connection; |
37 private Connection connection; |
37 |
38 |
38 public DatabaseConnection(DatabaseDefinition databaseDefinition) throws SQLException { |
39 public DatabaseConnection(DatabaseDefinition databaseDefinition) throws SQLException { |
39 this.databaseDefinition = databaseDefinition; |
40 this.databaseDefinition = databaseDefinition; |
40 |
41 |
41 connection = DriverManager.getConnection(databaseDefinition.getUrl(), databaseDefinition.getName(), databaseDefinition.getPassword()); |
42 connection = DriverManager.getConnection(databaseDefinition.getUrl(), databaseDefinition.getUserName(), databaseDefinition.getPassword()); |
42 } |
43 } |
43 |
44 |
44 public void executeQuery(SQLCommand sqlCommand, Formatter formatter) throws SQLException { |
45 public void executeQuery(SQLCommand sqlCommand, Formatter formatter) throws SQLException { |
45 formatter.writeStartDatabase(databaseDefinition); |
46 formatter.writeStartDatabase(databaseDefinition); |
46 processCommand(sqlCommand, formatter); |
47 processCommand(sqlCommand, formatter); |
70 } |
71 } |
71 |
72 |
72 private void processQueryCommand(SQLCommand sqlCommand, Formatter formatter) throws SQLException { |
73 private void processQueryCommand(SQLCommand sqlCommand, Formatter formatter) throws SQLException { |
73 formatter.writeStartResultSet(); |
74 formatter.writeStartResultSet(); |
74 formatter.writeQuery(sqlCommand.getQuery()); |
75 formatter.writeQuery(sqlCommand.getQuery()); |
75 /** TODO: formatter.writeParameters(null); */ |
76 formatter.writeParameters(sqlCommand.getParameters()); |
76 try (PreparedStatement ps = sqlCommand.prepareStatement(connection)) { |
77 try (PreparedStatement ps = sqlCommand.prepareStatement(connection)) { |
77 sqlCommand.parametrize(ps); |
78 sqlCommand.parametrize(ps); |
78 try (ResultSet rs = ps.executeQuery()) { |
79 try (ResultSet rs = ps.executeQuery()) { |
79 processResultSet(rs, formatter); |
80 processResultSet(rs, formatter); |
80 } |
81 } |
84 } |
85 } |
85 |
86 |
86 private void processUpdateCommand(SQLCommand sqlCommand, Formatter formatter) throws SQLException { |
87 private void processUpdateCommand(SQLCommand sqlCommand, Formatter formatter) throws SQLException { |
87 formatter.writeStartUpdatesResult(); |
88 formatter.writeStartUpdatesResult(); |
88 formatter.writeQuery(sqlCommand.getQuery()); |
89 formatter.writeQuery(sqlCommand.getQuery()); |
89 /** TODO: formatter.writeParameters(null); */ |
90 formatter.writeParameters(sqlCommand.getParameters()); |
90 try (PreparedStatement ps = sqlCommand.prepareStatement(connection)) { |
91 try (PreparedStatement ps = sqlCommand.prepareStatement(connection)) { |
91 sqlCommand.parametrize(ps); |
92 sqlCommand.parametrize(ps); |
92 int updatedRowsCount = ps.executeUpdate(); |
93 int updatedRowsCount = ps.executeUpdate(); |
93 formatter.writeUpdatedRowsCount(updatedRowsCount); |
94 formatter.writeUpdatedRowsCount(updatedRowsCount); |
94 |
95 |
102 |
103 |
103 formatter.writeEndUpdatesResult(); |
104 formatter.writeEndUpdatesResult(); |
104 } |
105 } |
105 |
106 |
106 private void processResultSet(ResultSet rs, Formatter formatter) throws SQLException { |
107 private void processResultSet(ResultSet rs, Formatter formatter) throws SQLException { |
107 /** TODO: formatter.writeColumnsHeader(null); */ |
108 formatter.writeColumnsHeader(new ColumnsHeader(rs.getMetaData())); |
|
109 int columnCount = rs.getMetaData().getColumnCount(); |
|
110 |
108 while (rs.next()) { |
111 while (rs.next()) { |
109 formatter.writeStartRow(); |
112 formatter.writeStartRow(); |
110 |
113 |
111 /** TODO: formatter.writeColumnValue(rs.get); */ |
114 for (int i = 1; i <= columnCount; i++) { |
|
115 formatter.writeColumnValue(rs.getObject(i)); |
|
116 } |
|
117 |
112 formatter.writeEndRow(); |
118 formatter.writeEndRow(); |
113 } |
119 } |
|
120 |
114 } |
121 } |
115 } |
122 } |