SQL Java 更新记录问题
SQL Java Update record issue
我尝试创建用户的过程将通过输入 "userID, userName, Resident, selectedTeam" 创建粉丝,并将保存到 'FAN' table。但是在创建“FAN”的同时,我想从 'FAN' 获取 "selectedTeam" 并通过获取 selectedTeam 并匹配它来更新“TEAM”table、“VOTES”列使用 teamID,如果成功,它将把投票记录增加 1(类似于 COUNT 的功能)。
我遇到的问题是正在创建 FAN,但未更新 VOTES 记录。什么都没发生。
这是更新命令
addEntry =
connection.prepareStatement( "UPDATE TEAM SET VOTES = VOTES + 1 "
+ "WHERE TEAM_ID =" + getTeamID());
addEntry.executeUpdate(); // insert the entry
SQL 脚本
DROP TABLE Fan;
DROP TABLE Player;
DROP TABLE Team;
CREATE TABLE Team
(Team_id INT,
Team_name VARCHAR (20),
Region VARCHAR (10),
League VARCHAR (30),
Manager VARCHAR (20),
Votes INT,
CONSTRAINT PK_Team PRIMARY KEY (Team_id));
CREATE TABLE Player
(Player_id INT ,
Player_name CHAR (30),
Player_age INT ,
Player_position CHAR (3),
Nationality CHAR (20),
Team_id INT ,
CONSTRAINT PK_Player PRIMARY KEY (Player_id),
CONSTRAINT FK_Player FOREIGN KEY (Team_id) REFERENCES Team (Team_id));
CREATE TABLE Fan
(User_id INT ,
User_name CHAR (20),
Resident CHAR (20),
Selected_team INT,
CONSTRAINT PK_User PRIMARY KEY (User_id));
INSERT INTO Team
VALUES (1, 'Arsenal FC', 'England', 'Barclays Premier League', 'Arsene Wenger', 0);
INSERT INTO Team
VALUES (2, 'Aston Villa FC', 'England', 'Barclays Premier League', 'Tim Sherwood', 0);
INSERT INTO Team
VALUES (3, 'Reading FC', 'England', 'Championship', 'Steve Clark', 0);
INSERT INTO Team
VALUES (4, 'Liverpool FC', 'England', 'Barclays Premier League', 'Brendan Rodgers', 0);
INSERT INTO Player
VALUES (1001, 'Wojciech Szczensy', 24, 'GK', 'Poland', 1);
INSERT INTO Player
VALUES (1002, 'Kieran Gibbs', 25, 'DF' , 'England', 1);
INSERT INTO Player
VALUES (1003, 'Per Mertesacker', 30, 'DF', 'Germany', 1);
INSERT INTO Player
VALUES (1004, 'Laurent Koscielny', 29, 'DF', 'France', 1);
INSERT INTO Player
VALUES (1005, 'Tomas Rosicky', 34, 'MF', 'Czech Republic', 1);
INSERT INTO Player
VALUES (1006, 'Mikel Arteta', 32, 'MF', 'Spain', 1);
INSERT INTO Player
VALUES (1007, 'Jack Wilshere', 23, 'MF', 'England', 1);
INSERT INTO Player
VALUES (1008, 'Mesut Ozil', 26, 'MF', 'Germany', 1);
INSERT INTO Player
VALUES (1009, 'Olivier Giroud', 28, 'FW', 'France', 1);
INSERT INTO Player
VALUES (1010, 'Theo Walcott', 25, 'FW', 'England', 1);
INSERT INTO Player
VALUES (1011, 'Alex Oxlade-Chamberlain', 21, 'FW', 'England', 1);
INSERT INTO Player
VALUES (1012, 'Aaron Ramsey', 24, 'MF', 'Wales', 1);
INSERT INTO Player
VALUES (1013, 'Alexis Sanchez', 26, 'FW', 'Chile', 1);
INSERT INTO Player
VALUES (1014, 'Nacho Monreal', 29, 'DF', 'Spain', 1);
INSERT INTO Player
VALUES (1015, 'Santi Cazorla', 30, 'MF', 'Spain', 1);
INSERT INTO Player
VALUES (1016, 'Mathieu Flamini', 31, 'MF', 'France', 1);
INSERT INTO Player
VALUES (1017, 'Calum Chambers', 20, 'DF', 'England', 1);
INSERT INTO Player
VALUES (1018, 'Danny Welbeck', 24, 'FW', 'England', 1);
INSERT INTO Player
VALUES (1019, 'Francis Coquelin', 23, 'MF', 'France', 1);
INSERT INTO Player
VALUES (1020, 'Brad Guzan', 30, 'GK', 'United States', 2);
INSERT INTO Player
VALUES (1021, 'Nathan Baker', 23, 'DF', 'England', 2);
INSERT INTO Player
VALUES (1022, 'Joe Bennett', 24, 'DF', 'England', 2);
INSERT INTO Player
VALUES (1023, 'Ron Vlaar', 30, 'DF', 'Netherlands', 2);
INSERT INTO Player
VALUES (1024, 'Jores Okore', 22, 'DF', 'Denmark', 2);
INSERT INTO Player
VALUES (1025, 'Ciaran Clark', 25, 'DF', 'Ireland', 2);
INSERT INTO Player
VALUES (1026, 'Phillipe Senderos', 30, 'DF', 'Switzerland', 2);
INSERT INTO Player
VALUES (1027, 'Alan Hutton', 30, 'DF', 'Scotland', 2);
INSERT INTO Player
VALUES (1028, 'Aly Cissokho', 27, 'DF', 'France', 2);
INSERT INTO Player
VALUES (1029, 'Matthew Lowton', 25, 'DF', 'England', 2);
INSERT INTO Player
VALUES (1030, 'Leandro Bacuna', 23, 'MF', 'Netherlands', 2);
INSERT INTO Player
VALUES (1031, 'Tom Cleverley', 25, 'MF', 'England', 2);
INSERT INTO Player
VALUES (1032, 'Scott Sinclair', 25, 'MF', 'England', 2);
INSERT INTO Player
VALUES (1033, 'Fabian Delph', 25, 'MF', 'England', 2);
INSERT INTO Player
VALUES (1034, 'Ashley Westwood', 24, 'MF', 'England', 2);
INSERT INTO Player
VALUES (1035, 'Charles Nzogbia', 28, 'MF', 'France', 2);
INSERT INTO Player
VALUES (1036, 'Jack Grealish', 19, 'MF', 'Ireland', 2);
INSERT INTO Player
VALUES (1037, 'Andreas Weimann', 23, 'FW', 'Austria', 2);
INSERT INTO Player
VALUES (1038, 'Gabriel Agbonlahor', 28, 'FW', 'England', 2);
INSERT INTO Player
VALUES (1039, 'Christian Benteke', 24, 'FW', 'Belgium', 2);
INSERT INTO Player
VALUES (1040, 'Adam Federici', 30, 'GK', 'Australia', 3);
INSERT INTO Player
VALUES (1041, 'Chris Gunter', 25, 'DF', 'Wales', 3);
INSERT INTO Player
VALUES (1042, 'Stephen Kelly', 31, 'DF', 'Ireland', 3);
INSERT INTO Player
VALUES (1043, 'Alex Pearce', 26, 'DF', 'Ireland', 3);
INSERT INTO Player
VALUES (1044, 'Michael Hector', 22, 'DF', 'England', 3);
INSERT INTO Player
VALUES (1045, 'Oliver Norwood', 23, 'MF', 'Northern Ireland', 3);
INSERT INTO Player
VALUES (1046, 'Danny Guthrie', 27, 'MF', 'England', 3);
INSERT INTO Player
VALUES (1047, 'Hal Robson-Kanu', 25, 'MF', 'Wales', 3);
INSERT INTO Player
VALUES (1048, 'Jordan Obita', 21, 'MF', 'England', 3);
INSERT INTO Player
VALUES (1049, 'Garath McCleary', 27, 'MF', 'Jamaica', 3);
INSERT INTO Player
VALUES (1050, 'Hope Akpan', 23, 'MF', 'Nigeria', 3);
INSERT INTO Player
VALUES (1051, 'Jem Karacan', 26, 'MF', 'Turkey', 3);
INSERT INTO Player
VALUES (1052, 'Danny Williams', 26, 'MF', 'USA', 3);
INSERT INTO Player
VALUES (1053, 'Jake Taylor', 23, 'MF', 'Wales', 3);
INSERT INTO Player
VALUES (1054, 'Pavel Pogrebnyak', 31, 'FW', 'Russia', 3);
INSERT INTO Player
VALUES (1055, 'Simon Cox', 27, 'FW', 'Ireland', 3);
INSERT INTO Player
VALUES (1056, 'Jamie Mackie', 29, 'FW', 'Scotland', 3);
INSERT INTO Player
VALUES (1057, 'Nick Blackman', 25, 'FW', 'England', 3);
INSERT INTO Player
VALUES (1058, 'Simon Mignolet', 27, 'GK', 'Belgium', 4);
INSERT INTO Player
VALUES (1059, 'Glen Johnson', 30, 'DF', 'England', 4);
INSERT INTO Player
VALUES (1060, 'José Enrique', 29, 'DF', 'Spain', 4);
INSERT INTO Player
VALUES (1061, 'Kolo Touré', 33, 'DF', 'Ivory Coast', 4);
INSERT INTO Player
VALUES (1062, 'Dejan Lovren', 25, 'DF', 'Croatia', 4);
INSERT INTO Player
VALUES (1063, 'Mamadou Sakho', 25, 'DF', 'France', 4);
INSERT INTO Player
VALUES (1064, 'Martin Skrtel', 30, 'DF', 'Slovakia', 4);
INSERT INTO Player
VALUES (1065, 'Steven Gerrard', 34, 'MF', 'England', 4);
INSERT INTO Player
VALUES (1066, 'Philippe Coutinho', 22, 'MF', 'Brazil', 4);
INSERT INTO Player
VALUES (1067, 'Jordan Henderson', 24, 'MF', 'England', 4);
INSERT INTO Player
VALUES (1068, 'Adam Lallana', 26, 'MF', 'England', 4);
INSERT INTO Player
VALUES (1069, 'Emre Can', 21, 'MF', 'Germany', 4);
INSERT INTO Player
VALUES (1070, 'Joe Allen', 25, 'MF', 'Wales', 4);
INSERT INTO Player
VALUES (1071, 'Raheem Sterling', 20, 'MF', 'England', 4);
INSERT INTO Player
VALUES (1072, 'Jordon Ibe', 19, 'MF', 'England', 4);
INSERT INTO Player
VALUES (1073, 'Rickie Lambert', 33, 'FW', 'England', 4);
INSERT INTO Player
VALUES (1074, 'Daniel Sturridge', 25, 'FW', 'England', 4);
INSERT INTO Player
VALUES (1075, 'Fabio Borini', 23, 'FW', 'Italy', 4);
INSERT INTO Player
VALUES (1076, 'Mario Balotelli', 24, 'FW', 'Italy', 4);
JDBC代码:
// check whether dataSource was injected by the server
if ( dataSource == null )
throw new SQLException( "Unable to obtain DataSource" );
// obtain a connection from the connection pool
Connection connection = dataSource.getConnection();
// check whether connection was successful
if ( connection == null )
throw new SQLException( "Unable to connect to DataSource" );
try
{
// create a PreparedStatement to insert a new address book entry
PreparedStatement addEntry =
connection.prepareStatement( "INSERT INTO FAN " +
"(USER_ID,USER_NAME,RESIDENT,SELECTED_TEAM)" +
"VALUES ( ?, ?, ?, ? )" );
// specify the PreparedStatement's arguments
addEntry.setInt( 1, getUserID() );
addEntry.setString( 2, getUserName() );
addEntry.setString( 3, getResident() );
addEntry.setInt( 4, getSelectedTeam() );
addEntry.executeUpdate(); // insert the entry
addEntry = connection.prepareStatement( "UPDATE TEAM SET VOTES = VOTES + 1 "
+ "WHERE TEAM_ID = " + getTeamID());
addEntry.executeUpdate(); // insert the entry
return "Prediction"; // go back to index.xhtml page
} // end try
finally
{
connection.close(); // return this connection to pool
} // end finally
} // end method save
// return a ResultSet of entries
public ResultSet getTeams() throws SQLException
{
// check whether dataSource was injected by the server
if ( dataSource == null )
throw new SQLException( "Unable to obtain DataSource" );
// obtain a connection from the connection pool
Connection connection = dataSource.getConnection();
// check whether connection was successful
if ( connection == null )
throw new SQLException( "Unable to connect to DataSource" );
try
{
// create a PreparedStatement to insert a new address book entry
PreparedStatement getTeams = connection.prepareStatement(
"SELECT TEAM_ID, TEAM_NAME, REGION, LEAGUE, MANAGER, VOTES " +
"FROM TEAM");
CachedRowSet rowSet = new com.sun.rowset.CachedRowSetImpl();
rowSet.populate( getTeams.executeQuery() );
return rowSet;
} // end try
finally
{
connection.close(); // return this connection to pool
} // end finally
} // end method getAddresses
您可以在 Fan
table table 中使用 trigger
,当您添加新的粉丝触发器时,将检查 his/her 个选定的团队。
然后它将更新 Teams rable 列。触发器是解决这个问题的好而简单的方法。如果您需要更多帮助,请告诉我
CREATE TRIGGER [TRIGGER_ALTER_COUNT] ON [dbo].[tblExample]
FOR INSERT, UPDATE
AS
BEGIN
DECLARE @getSelectedTeamID VARCHAR(36)
SELECT @SelectedTeamID = getSelectedTeam FROM INSERTED
UPDATE [dbo].[YourTeamsTblExample] SET VoteCount = VoteCount + 1
WHERE SelectedTeamID = @getSelectedTeamID
结束
addEntry =
connection.prepareStatement( "UPDATE TEAM SET VOTES = VOTES + 1 "
+ "WHERE TEAM_ID =" + getTeamID());
addEntry.executeUpdate(); // insert the entry
我尝试创建用户的过程将通过输入 "userID, userName, Resident, selectedTeam" 创建粉丝,并将保存到 'FAN' table。但是在创建“FAN”的同时,我想从 'FAN' 获取 "selectedTeam" 并通过获取 selectedTeam 并匹配它来更新“TEAM”table、“VOTES”列使用 teamID,如果成功,它将把投票记录增加 1(类似于 COUNT 的功能)。
我遇到的问题是正在创建 FAN,但未更新 VOTES 记录。什么都没发生。
这是更新命令
addEntry =
connection.prepareStatement( "UPDATE TEAM SET VOTES = VOTES + 1 "
+ "WHERE TEAM_ID =" + getTeamID());
addEntry.executeUpdate(); // insert the entry
SQL 脚本
DROP TABLE Fan;
DROP TABLE Player;
DROP TABLE Team;
CREATE TABLE Team
(Team_id INT,
Team_name VARCHAR (20),
Region VARCHAR (10),
League VARCHAR (30),
Manager VARCHAR (20),
Votes INT,
CONSTRAINT PK_Team PRIMARY KEY (Team_id));
CREATE TABLE Player
(Player_id INT ,
Player_name CHAR (30),
Player_age INT ,
Player_position CHAR (3),
Nationality CHAR (20),
Team_id INT ,
CONSTRAINT PK_Player PRIMARY KEY (Player_id),
CONSTRAINT FK_Player FOREIGN KEY (Team_id) REFERENCES Team (Team_id));
CREATE TABLE Fan
(User_id INT ,
User_name CHAR (20),
Resident CHAR (20),
Selected_team INT,
CONSTRAINT PK_User PRIMARY KEY (User_id));
INSERT INTO Team
VALUES (1, 'Arsenal FC', 'England', 'Barclays Premier League', 'Arsene Wenger', 0);
INSERT INTO Team
VALUES (2, 'Aston Villa FC', 'England', 'Barclays Premier League', 'Tim Sherwood', 0);
INSERT INTO Team
VALUES (3, 'Reading FC', 'England', 'Championship', 'Steve Clark', 0);
INSERT INTO Team
VALUES (4, 'Liverpool FC', 'England', 'Barclays Premier League', 'Brendan Rodgers', 0);
INSERT INTO Player
VALUES (1001, 'Wojciech Szczensy', 24, 'GK', 'Poland', 1);
INSERT INTO Player
VALUES (1002, 'Kieran Gibbs', 25, 'DF' , 'England', 1);
INSERT INTO Player
VALUES (1003, 'Per Mertesacker', 30, 'DF', 'Germany', 1);
INSERT INTO Player
VALUES (1004, 'Laurent Koscielny', 29, 'DF', 'France', 1);
INSERT INTO Player
VALUES (1005, 'Tomas Rosicky', 34, 'MF', 'Czech Republic', 1);
INSERT INTO Player
VALUES (1006, 'Mikel Arteta', 32, 'MF', 'Spain', 1);
INSERT INTO Player
VALUES (1007, 'Jack Wilshere', 23, 'MF', 'England', 1);
INSERT INTO Player
VALUES (1008, 'Mesut Ozil', 26, 'MF', 'Germany', 1);
INSERT INTO Player
VALUES (1009, 'Olivier Giroud', 28, 'FW', 'France', 1);
INSERT INTO Player
VALUES (1010, 'Theo Walcott', 25, 'FW', 'England', 1);
INSERT INTO Player
VALUES (1011, 'Alex Oxlade-Chamberlain', 21, 'FW', 'England', 1);
INSERT INTO Player
VALUES (1012, 'Aaron Ramsey', 24, 'MF', 'Wales', 1);
INSERT INTO Player
VALUES (1013, 'Alexis Sanchez', 26, 'FW', 'Chile', 1);
INSERT INTO Player
VALUES (1014, 'Nacho Monreal', 29, 'DF', 'Spain', 1);
INSERT INTO Player
VALUES (1015, 'Santi Cazorla', 30, 'MF', 'Spain', 1);
INSERT INTO Player
VALUES (1016, 'Mathieu Flamini', 31, 'MF', 'France', 1);
INSERT INTO Player
VALUES (1017, 'Calum Chambers', 20, 'DF', 'England', 1);
INSERT INTO Player
VALUES (1018, 'Danny Welbeck', 24, 'FW', 'England', 1);
INSERT INTO Player
VALUES (1019, 'Francis Coquelin', 23, 'MF', 'France', 1);
INSERT INTO Player
VALUES (1020, 'Brad Guzan', 30, 'GK', 'United States', 2);
INSERT INTO Player
VALUES (1021, 'Nathan Baker', 23, 'DF', 'England', 2);
INSERT INTO Player
VALUES (1022, 'Joe Bennett', 24, 'DF', 'England', 2);
INSERT INTO Player
VALUES (1023, 'Ron Vlaar', 30, 'DF', 'Netherlands', 2);
INSERT INTO Player
VALUES (1024, 'Jores Okore', 22, 'DF', 'Denmark', 2);
INSERT INTO Player
VALUES (1025, 'Ciaran Clark', 25, 'DF', 'Ireland', 2);
INSERT INTO Player
VALUES (1026, 'Phillipe Senderos', 30, 'DF', 'Switzerland', 2);
INSERT INTO Player
VALUES (1027, 'Alan Hutton', 30, 'DF', 'Scotland', 2);
INSERT INTO Player
VALUES (1028, 'Aly Cissokho', 27, 'DF', 'France', 2);
INSERT INTO Player
VALUES (1029, 'Matthew Lowton', 25, 'DF', 'England', 2);
INSERT INTO Player
VALUES (1030, 'Leandro Bacuna', 23, 'MF', 'Netherlands', 2);
INSERT INTO Player
VALUES (1031, 'Tom Cleverley', 25, 'MF', 'England', 2);
INSERT INTO Player
VALUES (1032, 'Scott Sinclair', 25, 'MF', 'England', 2);
INSERT INTO Player
VALUES (1033, 'Fabian Delph', 25, 'MF', 'England', 2);
INSERT INTO Player
VALUES (1034, 'Ashley Westwood', 24, 'MF', 'England', 2);
INSERT INTO Player
VALUES (1035, 'Charles Nzogbia', 28, 'MF', 'France', 2);
INSERT INTO Player
VALUES (1036, 'Jack Grealish', 19, 'MF', 'Ireland', 2);
INSERT INTO Player
VALUES (1037, 'Andreas Weimann', 23, 'FW', 'Austria', 2);
INSERT INTO Player
VALUES (1038, 'Gabriel Agbonlahor', 28, 'FW', 'England', 2);
INSERT INTO Player
VALUES (1039, 'Christian Benteke', 24, 'FW', 'Belgium', 2);
INSERT INTO Player
VALUES (1040, 'Adam Federici', 30, 'GK', 'Australia', 3);
INSERT INTO Player
VALUES (1041, 'Chris Gunter', 25, 'DF', 'Wales', 3);
INSERT INTO Player
VALUES (1042, 'Stephen Kelly', 31, 'DF', 'Ireland', 3);
INSERT INTO Player
VALUES (1043, 'Alex Pearce', 26, 'DF', 'Ireland', 3);
INSERT INTO Player
VALUES (1044, 'Michael Hector', 22, 'DF', 'England', 3);
INSERT INTO Player
VALUES (1045, 'Oliver Norwood', 23, 'MF', 'Northern Ireland', 3);
INSERT INTO Player
VALUES (1046, 'Danny Guthrie', 27, 'MF', 'England', 3);
INSERT INTO Player
VALUES (1047, 'Hal Robson-Kanu', 25, 'MF', 'Wales', 3);
INSERT INTO Player
VALUES (1048, 'Jordan Obita', 21, 'MF', 'England', 3);
INSERT INTO Player
VALUES (1049, 'Garath McCleary', 27, 'MF', 'Jamaica', 3);
INSERT INTO Player
VALUES (1050, 'Hope Akpan', 23, 'MF', 'Nigeria', 3);
INSERT INTO Player
VALUES (1051, 'Jem Karacan', 26, 'MF', 'Turkey', 3);
INSERT INTO Player
VALUES (1052, 'Danny Williams', 26, 'MF', 'USA', 3);
INSERT INTO Player
VALUES (1053, 'Jake Taylor', 23, 'MF', 'Wales', 3);
INSERT INTO Player
VALUES (1054, 'Pavel Pogrebnyak', 31, 'FW', 'Russia', 3);
INSERT INTO Player
VALUES (1055, 'Simon Cox', 27, 'FW', 'Ireland', 3);
INSERT INTO Player
VALUES (1056, 'Jamie Mackie', 29, 'FW', 'Scotland', 3);
INSERT INTO Player
VALUES (1057, 'Nick Blackman', 25, 'FW', 'England', 3);
INSERT INTO Player
VALUES (1058, 'Simon Mignolet', 27, 'GK', 'Belgium', 4);
INSERT INTO Player
VALUES (1059, 'Glen Johnson', 30, 'DF', 'England', 4);
INSERT INTO Player
VALUES (1060, 'José Enrique', 29, 'DF', 'Spain', 4);
INSERT INTO Player
VALUES (1061, 'Kolo Touré', 33, 'DF', 'Ivory Coast', 4);
INSERT INTO Player
VALUES (1062, 'Dejan Lovren', 25, 'DF', 'Croatia', 4);
INSERT INTO Player
VALUES (1063, 'Mamadou Sakho', 25, 'DF', 'France', 4);
INSERT INTO Player
VALUES (1064, 'Martin Skrtel', 30, 'DF', 'Slovakia', 4);
INSERT INTO Player
VALUES (1065, 'Steven Gerrard', 34, 'MF', 'England', 4);
INSERT INTO Player
VALUES (1066, 'Philippe Coutinho', 22, 'MF', 'Brazil', 4);
INSERT INTO Player
VALUES (1067, 'Jordan Henderson', 24, 'MF', 'England', 4);
INSERT INTO Player
VALUES (1068, 'Adam Lallana', 26, 'MF', 'England', 4);
INSERT INTO Player
VALUES (1069, 'Emre Can', 21, 'MF', 'Germany', 4);
INSERT INTO Player
VALUES (1070, 'Joe Allen', 25, 'MF', 'Wales', 4);
INSERT INTO Player
VALUES (1071, 'Raheem Sterling', 20, 'MF', 'England', 4);
INSERT INTO Player
VALUES (1072, 'Jordon Ibe', 19, 'MF', 'England', 4);
INSERT INTO Player
VALUES (1073, 'Rickie Lambert', 33, 'FW', 'England', 4);
INSERT INTO Player
VALUES (1074, 'Daniel Sturridge', 25, 'FW', 'England', 4);
INSERT INTO Player
VALUES (1075, 'Fabio Borini', 23, 'FW', 'Italy', 4);
INSERT INTO Player
VALUES (1076, 'Mario Balotelli', 24, 'FW', 'Italy', 4);
JDBC代码:
// check whether dataSource was injected by the server
if ( dataSource == null )
throw new SQLException( "Unable to obtain DataSource" );
// obtain a connection from the connection pool
Connection connection = dataSource.getConnection();
// check whether connection was successful
if ( connection == null )
throw new SQLException( "Unable to connect to DataSource" );
try
{
// create a PreparedStatement to insert a new address book entry
PreparedStatement addEntry =
connection.prepareStatement( "INSERT INTO FAN " +
"(USER_ID,USER_NAME,RESIDENT,SELECTED_TEAM)" +
"VALUES ( ?, ?, ?, ? )" );
// specify the PreparedStatement's arguments
addEntry.setInt( 1, getUserID() );
addEntry.setString( 2, getUserName() );
addEntry.setString( 3, getResident() );
addEntry.setInt( 4, getSelectedTeam() );
addEntry.executeUpdate(); // insert the entry
addEntry = connection.prepareStatement( "UPDATE TEAM SET VOTES = VOTES + 1 "
+ "WHERE TEAM_ID = " + getTeamID());
addEntry.executeUpdate(); // insert the entry
return "Prediction"; // go back to index.xhtml page
} // end try
finally
{
connection.close(); // return this connection to pool
} // end finally
} // end method save
// return a ResultSet of entries
public ResultSet getTeams() throws SQLException
{
// check whether dataSource was injected by the server
if ( dataSource == null )
throw new SQLException( "Unable to obtain DataSource" );
// obtain a connection from the connection pool
Connection connection = dataSource.getConnection();
// check whether connection was successful
if ( connection == null )
throw new SQLException( "Unable to connect to DataSource" );
try
{
// create a PreparedStatement to insert a new address book entry
PreparedStatement getTeams = connection.prepareStatement(
"SELECT TEAM_ID, TEAM_NAME, REGION, LEAGUE, MANAGER, VOTES " +
"FROM TEAM");
CachedRowSet rowSet = new com.sun.rowset.CachedRowSetImpl();
rowSet.populate( getTeams.executeQuery() );
return rowSet;
} // end try
finally
{
connection.close(); // return this connection to pool
} // end finally
} // end method getAddresses
您可以在 Fan
table table 中使用 trigger
,当您添加新的粉丝触发器时,将检查 his/her 个选定的团队。
然后它将更新 Teams rable 列。触发器是解决这个问题的好而简单的方法。如果您需要更多帮助,请告诉我
CREATE TRIGGER [TRIGGER_ALTER_COUNT] ON [dbo].[tblExample]
FOR INSERT, UPDATE
AS
BEGIN
DECLARE @getSelectedTeamID VARCHAR(36)
SELECT @SelectedTeamID = getSelectedTeam FROM INSERTED
UPDATE [dbo].[YourTeamsTblExample] SET VoteCount = VoteCount + 1
WHERE SelectedTeamID = @getSelectedTeamID
结束
addEntry =
connection.prepareStatement( "UPDATE TEAM SET VOTES = VOTES + 1 "
+ "WHERE TEAM_ID =" + getTeamID());
addEntry.executeUpdate(); // insert the entry