会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 133306个问题

为什么我的fo-each遍历不出来



package com.itbaizhan;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
* 动态条件测试类
*/

public class DynamicConditionQueryTest {
   public List<Users> queryUsers(Users users){
       List<Users> list= new ArrayList<>();
       Connection conn =null;
       PreparedStatement ps = null;
       ResultSet rs = null;
       try{
           conn = JdbcUtils.getConnection();
           //拼接查询sql语句
           String sql = this.generate(users);
          // System.out.println(sql);
           ps = conn.prepareStatement(sql);
           //执行语句
           rs = ps.executeQuery();
           while (rs.next()){
               Users users1 = new Users();
               users1.setUserid(rs.getInt("userid"));
               users1.setUsername(rs.getString("username"));
               users1.setUserage(rs.getInt("userage"));
               list.add(users1);
           }
       }catch (Exception e){
           e.printStackTrace();
       }finally {
           JdbcUtils.closeResource(rs,ps,conn);
       }

       return list;
   }
   public String generate(Users users){
       StringBuilder sb = new StringBuilder("select * from users where 1=1 ");
       if (users.getUserid()>0){
           sb.append(" and userid = ").append(users.getUserid());
       }
       if (users.getUsername() != null && users.getUsername().length()>0){
           sb.append(" and username ='").append(users.getUsername()).append("'");
       }
       if (users.getUserage()>0){
           sb.append(" and userage = ").append(users.getUserage());
       }
       return sb.toString();
   }

   public static void main(String[] args) {
       DynamicConditionQueryTest d = new DynamicConditionQueryTest();
       Users users = new Users();
       users.setUserid(22);
       users.setUsername("yuan");
       List<Users> list = d.queryUsers(users);
       for (Users t:list){
           System.out.println(t.getUserid()+" "+t.getUsername()+" "+t.getUserage());
           System.out.println(" ni");
       }
   }
}


"C:\Program Files\Java\jdk-11.0.12\bin\java.exe" "-javaagent:D:\IntelliJ IDEA Community Edition 2023.1\lib\idea_rt.jar=65185:D:\IntelliJ IDEA Community Edition 2023.1\bin" -Dfile.encoding=UTF-8 -classpath D:\Mycode\jdbcdemo\out\production\jdbcdemoMysql;D:\Mycode\jdbcdemo\lib\mysql-connector-java-5.1.48.jar com.itbaizhan.DynamicConditionQueryTest


Process finished with exit code 0



JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术 1757楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/Oracle 数据库的使用 1758楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/Oracle 数据库的使用 1760楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/Oracle 数据库的使用 1761楼

老师, 请问一下, 我按照视频中的方法加载"db.properties"文件到输入流, 但是输入流是null.. 请看:


DBUtil.JAVA文件截图:


123.png


代码:

package com.yuanzhao.dbutil;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;


public class DBUtil {
	private static String url;
	private static String user;
	private static String password;
	
	static {
		try {
			Properties prop = new Properties();
			
			// 创建文件输入流
			InputStream is = DBUtil.class.getClassLoader().getResourceAsStream("db.properties");
			
			//测试输出
			System.out.println(is);
			
			// 加载配置文件
			prop.load(is);
					
			url = prop.getProperty("jdbc.url").trim();
			user = prop.getProperty("jdbc.username").trim();
			password = prop.getProperty("jdbc.password").trim();
		} catch (IOException e) {
			e.printStackTrace();
			
		}
	}
	
	public static Connection getConn() {
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(url, user, password);
		} catch (SQLException e) {
			System.out.println("DBUtil.getConn(连接创建失败, 请检查[url]:" + url + ", [user]:" + user + ", [password]:" + password + ")");
		}
		return conn;
	}

	public static Statement getStatement(Connection conn) {
		Statement statement = null;
		try {
			statement = conn.createStatement();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return statement;
	}

	public static PreparedStatement getStatement(Connection conn, String sql) {
		PreparedStatement preparedStatement = null;
		try {
			preparedStatement = conn.prepareStatement(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return preparedStatement;
	}

	public static void bindParam(PreparedStatement preparedStatement, Object... params) {
		try {
			for (int i = 0; i < params.length; i++) {
				preparedStatement.setObject((i + 1), params[i]);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public static void close(ResultSet resultSet, Statement statement, Connection conn) {
		if (resultSet != null) {
			try {
				resultSet.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		if (statement != null) {
			try {
				statement.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}


源代码打包:

MyPro0305.zip


JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术(旧) 1764楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术 1766楼

com.bjsxtjava.sql.Connectionjava.sql.DriverManagerjava.sql.SQLExceptionjava.sql.StatementJdbcTest {
    (String department_namelocation_id){
        Connection conn = Statement statement = {
            Class.()conn =
            DriverManager.()String sql = +department_name++location_id+statement = conn.createStatement()i = statement.executeUpdate(sql)System..println(i)} (Exception e) {
            e.printStackTrace()}{
            (statement!=){
                {
                    statement.close()} (SQLException e) {
                    e.printStackTrace()}
            }

            (conn!=){
                {
                    conn.close()} (SQLException e) {
                    e.printStackTrace()}
            }
        }
    }
    (String[] args) {
        JdbcTest jdbc = JdbcTest()jdbc.insertDepartments()}
}


按照视频来的,怎么有这个错误

Fri Oct 16 00:23:35 CST 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '8)' at line 1

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)

at com.mysql.jdbc.Util.getInstance(Util.java:408)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2491)

at com.mysql.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1552)

at com.mysql.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2607)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1480)

at com.bjsxt.JdbcTest.insertDepartments(JdbcTest.java:23)

at com.bjsxt.JdbcTest.main(JdbcTest.java:49)


Process finished with exit code 0


怎么解

JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术(旧) 1767楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术(旧) 1768楼
JAVA 全系列/第四阶段:数据库与AI协同技术实战/JDBC技术(旧) 1769楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637