import java.sql.*;public class Main { public static void main(String[] args) { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 加载MySQL驱动 Class.forName("com.mysql.jdbc.Driver"); // 建立连接 conn = DriverManager.getConnection("jdbc:mysql://localhost/jdbc", "root", "123456"); // 创建Statement对象 stmt = conn.createStatement(); // 执行查询语句 rs = stmt.executeQuery("SELECT * FROM t_user"); // 输出查询结果 while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); System.out.println("id: " + id + ", name: " + name + ", age: " + age); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭连接和Statement对象 try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } }}
时间: 2024-02-10 19:33:15 浏览: 123
这段代码是用 Java 语言实现的,它连接了 MySQL 数据库,并通过执行 SQL 查询语句来获取用户表 t_user 的数据。具体来说,它使用了 JDBC API 来完成这个任务。JDBC 是 Java Database Connectivity 的缩写,是 Java 语言中连接数据库的一种标准方法。在这段代码中,首先通过加载 MySQL 驱动来注册 JDBC 驱动程序,然后使用 DriverManager.getConnection() 方法创建一个数据库连接。接着,使用 conn.createStatement() 方法创建 Statement 对象,用于执行 SQL 查询语句。执行查询语句后,通过 rs.next() 方法遍历查询结果,并通过 rs.getInt() 和 rs.getString() 等方法获取查询结果中的数据。最后,通过关闭 ResultSet、Statement 和 Connection 对象来释放相关的资源。
相关问题
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; public class AddUser { static Connection conn = null; static Statement stmt = null; public static boolean AddUser(){ link l=new link(); conn=l.linksql(); String sql = "INSERT INTO User VALUES ('as',24,'男','2135436','fefgs','dsgs')"; // String sql = "INSERT INTO admin VALUES ('124','asfe')"; try { stmt = conn.createStatement(); stmt.executeUpdate(sql); System.out.println("数据添加成功"); stmt.close(); conn.close(); } catch (SQLException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); System.out.println("数据添加失败"); } return false; } public static void main(String[] args){ AddUser(); } }运行时显示import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; public class AddUser { static Connection conn = null; static Statement stmt = null; public static boolean AddUser(){ link l=new link(); conn=l.linksql(); String sql = "INSERT INTO User VALUES ('as',24,'男','2135436','fefgs','dsgs')"; // String sql = "INSERT INTO admin VALUES ('124','asfe')"; try { stmt = conn.createStatement(); stmt.executeUpdate(sql); System.out.println("数据添加成功"); stmt.close(); conn.close(); } catch (SQLException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); System.out.println("数据添加失败"); } return false; } public static void main(String[] args){ AddUser(); } }运行显示关键字'User'附近有语法错误是怎么回事
这个错误提示是因为在SQL语句中使用了关键字"User"作为表名,而"User"是SQL Server的保留关键字,不能作为表名。解决方法是在表名前面加上方括号,例如:
```java
String sql = "INSERT INTO [User] VALUES ('as',24,'男','2135436','fefgs','dsgs')";
```
这样就可以避免使用关键字"User"而导致的语法错误。
添加代码使得这段代码显示在一个窗口中:package csclient; import java.sql.*; public class Test { private static String driver = "com.mysql.cj.jdbc.Driver"; private static String URL = "jdbc:mysql://localhost:3306/student"; private static String user = "root"; private static String password = "z7.h7.m7."; /** * JDBC测试. */ private static void JDBCexample() { // 1.加载数据库驱动 try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } testStatement(); } /** * 测试Statement的用法. */ private static void testStatement() { try (// 2.打开数据库连接 Connection conn = DriverManager.getConnection(URL, user, password); // 3.创建语句 Statement stmt = conn.createStatement()) { // 模拟SQL注入 testSqlInjecton(stmt); } catch (SQLException sqle) { System.out.println("SQLException : " + sqle); } } /** * 模拟SQL注入. * * @param stmt Statement对象. * @throws SQLException */ private static void testSqlInjecton(Statement stmt) throws SQLException { String name = "X' or 'Y' = 'Y"; String sql = "select * from stu_info where name = '" + name + "'"; ResultSet rs = stmt.executeQuery(sql); ResultSetPrinter.printResultSet(rs); } public static void main(String[] args) { JDBCexample(); } }
您可以使用Swing框架来创建一个简单的窗口,并将代码显示在其中。以下是示例代码:
```java
import javax.swing.*;
import java.awt.*;
public class CodeWindow extends JFrame {
public CodeWindow() {
// 设置窗口标题
setTitle("Code Display");
// 创建文本区域,用于显示代码
JTextArea codeTextArea = new JTextArea(20, 40);
codeTextArea.setEditable(false);
// 将代码添加到文本区域
String code = "package csclient; import java.sql.*; public class Test { private static String driver = \"com.mysql.cj.jdbc.Driver\"; private static String URL = \"jdbc:mysql://localhost:3306/student\"; private static String user = \"root\"; private static String password = \"z7.h7.m7.\"; /** * JDBC测试. */ private static void JDBCexample() { // 1.加载数据库驱动 try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } testStatement(); } /** * 测试Statement的用法. */ private static void testStatement() { try (// 2.打开数据库连接 Connection conn = DriverManager.getConnection(URL, user, password); // 3.创建语句 Statement stmt = conn.createStatement()) { // 模拟SQL注入 testSqlInjecton(stmt); } catch (SQLException sqle) { System.out.println(\"SQLException : \" + sqle); } } /** * 模拟SQL注入. * * @param stmt Statement对象. * @throws SQLException */ private static void testSqlInjecton(Statement stmt) throws SQLException { String name = \"X' or 'Y' = 'Y\"; String sql = \"select * from stu_info where name = '\" + name + \"'\"; ResultSet rs = stmt.executeQuery(sql); ResultSetPrinter.printResultSet(rs); } public static void main(String[] args) { JDBCexample(); } }";
codeTextArea.setText(code);
// 将文本区域添加到滚动面板中
JScrollPane scrollPane = new JScrollPane(codeTextArea);
// 将滚动面板添加到窗口中
getContentPane().add(scrollPane, BorderLayout.CENTER);
// 设置窗口大小并居中显示
setSize(500, 400);
setLocationRelativeTo(null);
// 显示窗口
setVisible(true);
}
public static void main(String[] args) {
new CodeWindow();
}
}
```
您可以将以上代码保存为一个名为 `CodeWindow.java` 的文件,并在命令行中运行 `javac CodeWindow.java` 编译它。然后,运行 `java CodeWindow` 以启动窗口并显示代码。
阅读全文