数据库代码封装,如下图
public class AppRunDB {
//数据库地址
//数据库的驱动
//数据库用户名
//数据库的密码
//注释部分为sqlsever连接的数据库驱动和地址
//protected static String dbClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
//protected static String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=db_fruit";
public static String dbURL="jdbc:mysql://localhost:3306/apprun";//(android我这数据库名android)
public static String dbClassName="com.mysql.jdbc.Driver";
public static String dbUser="root";
public static String dbPassword="123456";
private static Connection conn=null; //创建连接
//private static Statement stmt=null; //创建语句对象
//private static ResultSet rs=null;
public AppRunDB(){
try {
if(conn == null){
//加载驱动
Class.forName(dbClassName).newInstance();
//创建数据库连接
conn = DriverManager.getConnection(dbURL,dbUser,dbPassword);
}else {
return;
}
} catch (Exception e) {
System.out.print("数据库连接失败");
e.printStackTrace();
}
}
//查询操作
public static ResultSet executeQuery(String sql){
try {
if(conn == null)
new AppRunDB();
return conn.createStatement().executeQuery(sql);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
//更新操作(建议把增查删改具体的sql语句单独写,直接传入executeUpdate()方法里)
public static int executeUpdate(String sql){
try {
if(conn == null)
new AppRunDB();
return conn.createStatement().executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
//关闭连接
public static void close(){
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
conn=null;
}
}
}
这里需要注意一点:
在Java项目时,我们一般都是直接在项目导入JDBC,JavaWeb项目要把JDBC导入lib的目录下。
这也是我在单独测试数据库连接时,明明没有出任何问题。但是在from表单提交数据时,出现数据库连接失败。
Servlet代码如下
@WebServlet(name = "UserServlet")
public class UserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String phonenum = request.getParameter("phonenum");
String passwd = request.getParameter("passwd");
AppRunDB appRunDB = new AppRunDB();
String sql = "select * from user where phonenum =" + phonenum + " and " + "passwd =" + passwd;
try {
ResultSet rs = appRunDB.executeQuery(sql); //rs用来接收查询符合用户名和密码结果
while (rs.next()) {
System.out.print(rs.getInt("id"));
}
}catch(SQLException e){
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}