import java.sql.Connection; import java.sql.DriverManager; /** * 数据库工具类 * @author Zss * */ public class DBConnecter { private String connectDB = "jdbc:sqlserver://localhost:1433;DatabaseName=DB_201623010355;encrypt=false"; private String user = "sa"; private String password = "123456789"; private String jdbcName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; /** * 获取数据库连接 * @return * @throws Exception */ public Connection getConnection()throws Exception{ Class.forName(jdbcName); Connection con = DriverManager.getConnection(connectDB, user,password); return con; } /** * 关闭数据库 * @param con * @throws Exception */ public void closeCon(Connection con)throws Exception{ if(con!=null){ con.close(); } } public static void main(String[] args) { DBConnecter dbConnecter = new DBConnecter(); try{ dbConnecter.getConnection(); System.out.println("数据库连接成功!"); }catch(Exception e){ e.printStackTrace(); System.out.println("数据库连接失败!"); } } }
时间: 2024-04-02 22:32:54 浏览: 23
这段代码是一个数据库工具类,用于连接SQL Server数据库。在`getConnection()`方法中,我们首先使用`Class.forName()`加载SQL Server驱动程序,然后使用`DriverManager.getConnection()`方法建立数据库连接,并返回该连接。在`closeCon()`方法中,我们关闭数据库连接。在`main()`方法中,我们创建了一个`DBConnecter`对象,并调用其`getConnection()`方法来测试数据库连接是否成功。
如果您想要使用这个工具类连接SQL Server数据库,只需要将`connectDB`、`user`和`password`变量修改为您自己的数据库连接信息即可。当您需要连接数据库时,只需要创建一个`DBConnecter`对象,然后调用`getConnection()`方法即可。如果您不再需要连接数据库,则可以调用`closeCon()`方法关闭数据库连接。
请注意,连接SQL Server数据库还需要确保正确安装了SQL Server驱动程序,并且在`jdbcName`变量中指定了正确的驱动程序类名(这里使用的是SQL Server 2008及以上版本的驱动程序类名)。
相关问题
java.sql.SQLNonTransientConnectionException: No operations allowed after connection closed
这个异常通常是由于在数据库连接关闭后仍然尝试执行操作引起的。这可能是由于以下原因之一导致的:
1.连接超时或被关闭。
2.在连接关闭之前尝试执行操作。
为了解决这个问题,可以尝试以下几个步骤:
1.确保在使用连接之前,连接已经打开并且没有被关闭。
2.确保在使用连接之前,连接没有超时。
3.确保在使用连接之前,没有其他代码关闭了连接。
4.在使用完连接后,确保关闭连接。
以下是一个使用Java连接MySQL数据库的例子,可以帮助你更好地理解如何避免这个异常:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MySQLExample {
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:3306/test", "root", "password");
// 创建Statement对象
stmt = conn.createStatement();
// 执行查询语句
rs = stmt.executeQuery("SELECT * FROM users");
// 处理查询结果
while (rs.next()) {
System.out.println(rs.getString("username"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭ResultSet对象
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 关闭Statement对象
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 关闭Connection对象
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
```
根据提示,在右侧编辑器编写代码,使用PreparedStatement 接口完成查询已知数据表的记录,要求根据键盘输入的 ID 找到该记录。package step1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.io.*; public class JdbcTestFour{ public static final String DBDRIVER="com.mysql.jdbc.Driver"; public static final String DBURL="jdbc:mysql://localhost:3306/school"; public static final String DBUSER="root"; public static final String PASSWORD="123123"; public static void main(String[] args) throws Exception{ int id=0; String name=null; int age=0; String note=null; BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String sql="SELECT id,name,age,note FROM member WHERE id=?"; Connection conn=null; //每一个Connection 对象表示一个数据库连接 PreparedStatement pstmt=null; //数据库操作对象 /********** begin **********/ //加载驱动程序 //根据参数DBURL、DBUSER、PASSWORD 创建连接对象conn /********** end **********/ pstmt=conn.prepareStatement(sql); //执行SQL 语句 System.out.println("请输入学号"); id=Integer.parseInt(br.readLine()); pstmt.setInt(1,id); /********** begin **********/ ResultSet rs; //查询操作 /********** end **********/ /********** begin **********/ //显示查询数据 /********** end **********/ pstmt.close(); //关闭操作,如果不关闭操作,关闭连接也是一样的 conn.close(); //关闭连接 } }package step1; import java.sql.*; public class Insert { public void createDatabase() { try { // 加载数据库驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 建立数据库连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/", "root", "123123"); // 创建 Statement 对象 Statement stmt = conn.createStatement(); // 执行 SQL 语句创建数据库 String sql = "CREATE DATABASE school;"; stmt.executeUpdate(sql); // 关闭 Statement 对象和 Connection 对象 stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } }
代码实现如下:
```java
package step1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;
public class JdbcTestFour {
public static final String DBDRIVER="com.mysql.jdbc.Driver";
public static final String DBURL="jdbc:mysql://localhost:3306/school";
public static final String DBUSER="root";
public static final String PASSWORD="123123";
public static void main(String[] args) throws Exception{
int id=0;
String name=null;
int age=0;
String note=null;
Scanner sc = new Scanner(System.in);
String sql="SELECT id,name,age,note FROM member WHERE id=?";
Connection conn=null;
PreparedStatement pstmt=null;
//加载驱动程序
Class.forName(DBDRIVER);
//根据参数DBURL、DBUSER、PASSWORD 创建连接对象conn
conn = DriverManager.getConnection(DBURL, DBUSER, PASSWORD);
pstmt=conn.prepareStatement(sql);
System.out.println("请输入学号");
id=sc.nextInt();
pstmt.setInt(1,id);
//查询操作
ResultSet rs = pstmt.executeQuery();
if(rs.next()) {
//显示查询数据
name = rs.getString("name");
age = rs.getInt("age");
note = rs.getString("note");
System.out.println("ID: " + id + "\t姓名: " + name + "\t年龄: " + age + "\t备注: " + note);
} else {
System.out.println("未找到该学号对应的记录。");
}
pstmt.close();
conn.close();
}
}
```
该程序实现了根据键盘输入的 ID 查找数据库中对应的记录,并将记录的信息显示出来。其中,使用了 Scanner 类来读取键盘输入的数据。注意,程序所连接的数据库名为 school,所查询的数据表名为 member,需要确保该数据库和数据表已经创建成功。