假设数据库username为root password为123456,并且要完成对数据库的增删改查
时间: 2024-02-11 13:08:59 浏览: 25
好的,对于这个问题,我们可以采用JDBC来连接数据库,并进行增删改查操作。
首先,我们需要添加JDBC相关依赖。
```
<!-- MySQL JDBC -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
```
然后,我们需要编写一个JDBCUtil类,用于连接数据库和关闭连接。
```
public class JDBCUtil {
private static final String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456";
static {
try {
Class.forName(DRIVER_NAME);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USERNAME, PASSWORD);
}
public static void close(Connection conn, Statement stmt, ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
接着,我们可以在服务端的ChannelHandler中进行增删改查操作。
```
public class ServerHandler extends ChannelInboundHandlerAdapter {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
String request = (String) msg;
if (request.startsWith("select")) {
// 查询数据
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = JDBCUtil.getConnection();
stmt = conn.prepareStatement(request);
rs = stmt.executeQuery();
// 处理查询结果
while (rs.next()) {
// 将数据发送到客户端
ctx.writeAndFlush(rs.getString("column_name"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtil.close(conn, stmt, rs);
}
} else if (request.startsWith("insert") || request.startsWith("update") || request.startsWith("delete")) {
// 更新数据
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = JDBCUtil.getConnection();
stmt = conn.prepareStatement(request);
int result = stmt.executeUpdate();
// 处理更新结果
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtil.close(conn, stmt, null);
}
}
}
}
```
这样,我们就可以通过Netty连接服务端和客户端,并在服务端中连接数据库、获取数据并发送到客户端了。