java程序(jdbc) 向mysql数据库插入数据的问题

我的项目里有3个String 变量
String A ;
String B;
String C;
我想把它们插入到mysql数据库,
数据库我能连上,但是不知道怎么插入,求各位大神解答一下

9个回答

/**
 * 执行更新操作
 * @param sql 要执行更新的sql语句(insert、delete、update)
 * @param params 要执行的更新语句中占位符?的值,给定的顺序必须跟?的顺序一致
 * @return 更新语句执行后,所影响的数据的行数
 */
public int update(String sql,Object ... params){
    Connection con=null;
    PreparedStatement pstmt=null;
    int result=0;

    try {
        con=this.getConnection(); //获取连接
        //创建预编译执行语句
        pstmt=con.prepareStatement(sql);

        this.setParams(pstmt, params);

        //执行预编译语句,获取结果
        result=pstmt.executeUpdate();

    } catch (SQLException e) {
        e.printStackTrace();
    } finally{
        this.closeAll(null, pstmt, con);
    }
    return result;
}

    public int insertDesk(String A,String B,String C){
    DBHelper help = new DBHelper();//为上面update方法所在的类
    String sql = "insert into 表名 values (?,?,?,1,0,0,0)";//?就是占位符就是你那个实参要插入的地方
    return help.update(sql,A,B,C);
}
// 连接数据库获取数据 吧连接参数和sql语句改成你自己对应的,粘到你的方法里 搞定!
    Connection conn = null;
    Statement statement = null;
    ResultSet rs = null;

    // 连接参数
    String url =  "jdbc:mysql://localhost:3306/database"
    String username ="root";
    String password = "root";


    try {
        // 加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        // 建立接连
        conn = (Connection) DriverManager.getConnection(url, username, password);
        // 创建sql命令发送器
        statement = (Statement) conn.createStatement();
        // 创建sql语句
        String sql = "insert into test(A,B,C) value("A","B","C")";
        // 查询 获取结果集
        rs = statement.executeUpdate(sql);
        // 处理结果集
            按你自己的需要来判断,返回的是int值

    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }
JavaBuilt
JavaBuilt 回复a874909657: 你自己稍微改一下就行了,饭都送到你嘴里了,下面就看你自己了
接近 2 年之前 回复
a874909657
a874909657 我把值存到A B C 里面,不是说 把A B C 插入
接近 2 年之前 回复

你原生的jdbc,还是使用某某框架, 如果使用原生的jdbc,网上一大把啊

a874909657
a874909657 JDBC 网上的例子都好复杂看不太懂,大神能不能写个超简单的例子让我看看
接近 2 年之前 回复

我稍微讲解一下,用非专业的方式。
一般将项目中的数据存入数据库,其实需要3个方面。一个是Mysql数据库、一个你的项目、还有一个各种数据库为Java语言提供的连接Jar包。
也就是说,你的项目内还需要导入mysql的JDBC Jar包,在项目中导入Jar包后,你就可以通过使用Jar包中的类了。利用这些类,你可以建立项目和
mysql的连接->从项目中把某些值存入到数据库的某个表的中。
部分我几年前学习的代码
import java.sql.Connection;
import java.sql.DriverManager;

public class DBUtil {
private String url;

private String serverName; 

private String portNumber; 

private String databaseName; 

private String userName; 

private String passWord; 


public DBUtil() {

    url = "jdbc:mysql://";

    serverName = "localhost";

    portNumber = "3306";

    databaseName = "blogdatabase";

    userName = "root";

    passWord = "123456";

}

private String getConnectionUrl() {

    return url + serverName + ":" + portNumber + "/" + databaseName;

}

public Connection getConnection() {
    Connection con = null;
    try {
        Class.forName("com.mysql.jdbc.Driver"); 
    } catch (Exception e) {
        System.out.println("getConnection():" + e.getMessage());
        e.printStackTrace();
    }
    try {
        con = DriverManager.getConnection(getConnectionUrl(), userName,
                passWord); 

    } catch (Exception e) {
        System.out.println(" Wrong!");
        e.printStackTrace();
    }
    return con;

}

}


zfk1989
zfk1989 回复a874909657: 加载驱动 获取连接 获取预编译对象 执行sql 释放资源 你看你是不是字段顺序或者类型不一致哦,
接近 2 年之前 回复
a874909657
a874909657 回复ParaFeel: String A = "dsad" 你导入的时候不要出现dsad ,用A来插入
接近 2 年之前 回复
wh4656438
ParaFeel 回复a874909657: 什么叫,是可变的?
接近 2 年之前 回复
a874909657
a874909657 但是我的问题是我的A B C 都是String类的数据,是可变的,所以要怎么导入
接近 2 年之前 回复
a874909657
a874909657 我jar包已经到进来了,数据库都连接好了,你可以INSERT INTO TEST VALUES("A","B","C");
接近 2 年之前 回复

也可以使用Hibernate将对象插入。

1楼的答案就可以啊,你的意思是A可能是"张三",可能是"李四",也可能是"王二麻子",插入的时候就是插入A变量的值对吧,
1楼的内容,你把sql改一下就行了
String sql = "insert into test(A,B,C) value("A","B","C")";

你类里面不是定义了A/B/C三个变量嘛,他们保存不同的值,sql直接insert into test(A,B,C) value(A,B,C);就行了,前面的A/B/C是字段名,后面的A/B/C是变量名

1楼基本实现了你的需求
建议把Statement改成PreparedStatement 来用。

给你要的简单的例子
注册功能,是插入mysql数据

先设计好数据库要存储的数据(操作的表。需要知道结构,数据类型)再考虑插入问题

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java jdbc连接mysql数据库插入null值问题
ps.setFloat(8, device.getLatitude());如果device.getLatitude()返回的是null就报错,也就是说setFloat不能插入空值,而setString()方法就可以,不知道为什么请高手指点,谢谢!!
JDBC mysql批处理 插入数据似乎遇到了条数限制,请教解决方法
``` protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String sql = "INSERT INTO data VALUES(?)"; PreparedStatement ps = null; try { //设置不允许自动提交数据,connection为类私有变量,在init方法中赋值 connection.setAutoCommit(false); ps = connection.prepareStatement(sql); for (int i = 0; i < 20000; i++) { ps.setObject(1, i); //攒sql ps.addBatch(); //执行batch if (i % 1000 == 0) { ps.executeBatch(); //清空batch ps.clearBatch(); } } //全部执行完后一次提交数据 connection.commit(); } catch (SQLException e) { e.printStackTrace(); } } ``` 只能插入500条不知是不是数据库插入条数限制 mysql URL配置: jdbc:mysql://localhost:3306?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC 我把i的初始值改为10000,再次运行程序,数据库数据没有任何变化
jdbc操作mysql中文插入问题
insert into table values(1,'中文'),数据库的编码和表的编码均是utf-8 在mysql workbench中插入没有问题,就是java中插入时报错,为啥呢? 报错信息: java.sql.SQLException: Syntax error or access violation, message from server: "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 '' at line 1" at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1825) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1020) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1109) at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1070) at com.mysql.jdbc.Connection.execSQL(Connection.java:2027) at com.mysql.jdbc.Connection.execSQL(Connection.java:1984) at com.mysql.jdbc.Statement.execute(Statement.java:896) at cn.com.elaw.callcenter.service.SearchService.addRecord(SearchService.java:111) at cn.com.elaw.callcenter.service.SearchService.main(SearchService.java:141) 另外,用绑定变量的方式: String updateSQL = "insert into ccdb.to_queryInfo(humanID) values(?)"; PreparedStatement myPreparedStatement = myConnection.prepareStatement(updateSQL); // myPreparedStatement.setString(1, AH); myPreparedStatement.setInt(1, humanID); 不管有没有中文都报错 换了一个包后,插入不报错了,但是插入的数据乱码
往mysql数据库插入date类型的数据报错。
报错信息是: 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 '' 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:422) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.Util.getInstance(Util.java:386) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2625) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2415) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2333) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2318) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) at dao.ArticleDao.save(ArticleDao.java:28) at action.ActionServlet.service(ActionServlet.java:58) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) java.lang.RuntimeException: 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 '' at line 1 at dao.ArticleDao.save(ArticleDao.java:32) at action.ActionServlet.service(ActionServlet.java:58) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: 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 '' 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:422) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.Util.getInstance(Util.java:386) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2625) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2415) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2333) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2318) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) at dao.ArticleDao.save(ArticleDao.java:28) ... 22 more 求解答。先谢谢啦!mysql中数据类型是data类型的对应的实体类的属性是什么类型,老是报错,插入失败。啊啊,头大了。
JDBC 向数据库插入数据 遇到个怪问题 求大神回答
代码如下 package insertCar; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; public class InsertEsCar { public static void main(String[] args) throws SQLException { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/eauto100?useUnicode\\=true&characterEncoding\\=utf8&autoReconnect\\=true","root",""); Statement stmt = conn.createStatement(); String sql = "select * from es_car"; ResultSet rs = stmt.executeQuery(sql); List<carInfo> list = new ArrayList<carInfo>(); while(rs.next()){ carInfo car = new carInfo(); car.setCarId(rs.getInt("car_id")); car.setCarLineId(rs.getInt("car_line_id")); car.setCarName(rs.getString("car_name")); car.setMakeYear(rs.getString("make_year")); car.setAirCC(rs.getString("air_cc")); list.add(car); } String[] year = {"2016","2017"}; for (carInfo c : list) { if(c.getCarId() !=4226 && c.getCarId() !=4526){ String[] name = c.getCarName().split(" "); for (String i : year) { name[1] = i + "款"; String carname = ""; for (String str : name) { carname += str + " "; } c.setCarName(carname); sql = "insert into es_car (car_id,car_line_id, car_name, make_year, air_cc) values(null,"+c.getCarLineId()+",'"+c.getCarName()+"',"+i+", '"+c.getAirCC()+"')"; int a =stmt.executeUpdate(sql); // System.out.println(a); // conn.setAutoCommit(false); // conn.commit(); } } } } catch (Exception e) { e.printStackTrace(); }finally{ if(conn!=null){ conn.close(); } } } } class carInfo{ private Integer carId; private Integer carLineId; private String carName; private String makeYear; private String airCC; public Integer getCarId() { return carId; } public void setCarId(Integer carId) { this.carId = carId; } public Integer getCarLineId() { return carLineId; } public void setCarLineId(Integer carLineId) { this.carLineId = carLineId; } public String getCarName() { return carName; } public void setCarName(String carName) { this.carName = carName; } public String getMakeYear() { return makeYear; } public void setMakeYear(String makeYear) { this.makeYear = makeYear; } public String getAirCC() { return airCC; } public void setAirCC(String airCC) { this.airCC = airCC; } } 程序可以正常执行,打印出的sql语句放到数据库中也可以正常插入,a 的返回值为1,可是到数据库中查询表格里就是没有数据,救命!!!!!!!!!!!!!!!!!
Java客户端 调用WebService 插数据进MySql数据库
用esclipe 编写了 java客户端 也编写了 WebService 发现本来能在客户端使用JDBC插入数据库的方法移到WebService上却报出 初学java希望大神指导下!
java 连接mysql数据库 插入操作时?号乱码问题
Exception in thread "main" 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 '?,?,?)' at line ![ 图片说明](https://img-ask.csdn.net/upload/201707/31/1501502405_276345.png) mysql和 idea 编码都设置为了utf-8怎么不行啊
jdbc连接MySQL报错, 有没有大神帮忙解决一下
![代码](https://img-ask.csdn.net/upload/201812/08/1544267773_298311.png) 报错如下: ![图片说明](https://img-ask.csdn.net/upload/201812/08/1544269249_3555.png) 这是日志: ![rizhi](https://img-ask.csdn.net/upload/201812/08/1544267922_658274.png) 小白用JDBC连接MySQL数据库, 向数据表里面插入数据, 报错, 大神可不可以帮忙看看
向mysql数据库中插入数据时报错
public class categorydao { public static void save(category c) throws SQLException{ Connection conn=(Connection) DB.getConnection(); String sql=null; if(c.getId()==-1){ sql="insert into category values(null,?,?,?,?,?)"; }else{ sql="insert into category values("+c.getId()+",?,?,?,?,?)"; } PreparedStatement ps=conn.prepareStatement(sql); try { ps.setString(1,c.getName() ); ps.setString(2,c.getDescr()); ps.setInt(3, c.getPid()); ps.setInt(4, c.isIsleaf()?0:1); ps.setInt(5, c.getGrade()); ps.executeUpdate(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ DB.free(null, ps, conn); } } 错误如下:(反正插入不了) com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'PRIMARY'
java连接MYSQL数据库第一次可以,第二次报错
做项目在做一个用户首次登陆输入手机号码,发送随机密码的功能模块,首次点击完全没问题,系统会发送短信(中国移动的短信机的原理是连接它的数据库,插入一条数据即可)问题就出在连接数据库的问题上,再次发送,则后台报错ResultSet is from UPDATE. No Data.。 报错信息如下 ``` 严重: Exception occurred during processing request: ResultSet is from UPDATE. No Data. java.sql.SQLException: ResultSet is from UPDATE. No Data. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:7152) at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3867) at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3404) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2385) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792) at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:185) at DAO.dbconnection2.<init>(dbconnection2.java:16) at action.testsendaction.execute(testsendaction.java:38) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ``` dbconnection2.java 是创建连接,代码如下: ``` package DAO; import java.sql.Connection; import java.sql.DriverManager; public class dbconnection2 { private static final String DRIVER = "com.mysql.jdbc.Driver"; private static final String URL = "jdbc:mysql://*******:3306/mas?useUnicode=true&characterEncoding=gb2312"; private static final String USER = "ywz"; private static final String PASSWORD = "yw690"; private Connection con; public dbconnection2() throws Exception{ Class.forName(DRIVER); this.con = DriverManager.getConnection(URL, USER, PASSWORD); } public Connection getConnection() { return this.con; } public void closecon() throws Exception { if(this.con != null) { try { this.con.close(); } catch(Exception e) { throw e; } } } } ``` action代码: ``` public class testsendaction extends ActionSupport{ private String list; public String getList() { return list; } public void setList(String list) { this.list = list; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } private String content; public String execute() throws Exception{ dbconnection2 dbc2 = new dbconnection2(); Statement s1 = dbc2.getConnection().createStatement(); Random ran = new Random(); String pwd = ""; for(int i=0;i<6;i++) { pwd += ran.nextInt(10)+""; } System.out.println("ranpwd="+pwd); String mess = "本信息来自工资查询系统,用于用户的首次登陆,登陆密码为:"+pwd+" ,登陆成功后,请自行修改密码。"; String send = "insert into api_mt_6(mobiles,content) values('"+list+"','"+mess+"')"; s1.executeUpdate(send); System.out.println("send:"+send); s1.close(); dbc2.closecon(); return SUCCESS; } } ``` 报错是在数据库连接的new语句上。 连接最后也有关闭。但是就是不能进行二次访问数据库。只能重启下tomcat,然后又可以登录一次,第二次也无法连接了。 找了好久都没发现原因,希望大家帮帮忙 ,谢谢了!
急急急,请教JSP如何调用数据库mysql的java文件。
各位好,我实在是菜鸟,在网上找个JAVA文件,连接mysql数据库,经过测试,已经成功,现在用JSP页面来调用,就是不通过,真心请各位指点,急急急,下面把JAVA文件和JSP页面发出来,小弟谢过! JAVA文件 import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Connection; import java.sql.Statement; public class DB { public static void main(String[] args) throws Exception { Connection conn = null; String sql; // MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值 // 避免中文乱码要指定useUnicode和characterEncoding // 执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定, // 下面语句之前就要先创建javademo数据库 String url = "jdbc:mysql://localhost:3306/数据库名字?" + "user=数据库用户名&password=数据库密码&useUnicode=true&characterEncoding=UTF8"; try { // 之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来, // 可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以 Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动 // or: // com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver(); // or: // new com.mysql.jdbc.Driver(); System.out.println("成功加载MySQL驱动程序"); // 一个Connection代表一个数据库连接 conn = DriverManager.getConnection(url); // Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等 Statement stmt = conn.createStatement(); sql = "create table student(NO char(20),name varchar(20),primary key(NO))"; int result = stmt.executeUpdate(sql);// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功 if (result != -1) { System.out.println("创建数据表成功"); sql = "insert into student(NO,name) values('2012001','陶伟基')"; result = stmt.executeUpdate(sql); sql = "insert into student(NO,name) values('2012002','周小俊')"; result = stmt.executeUpdate(sql); sql = "select * from student"; ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值 System.out.println("学号\t姓名"); while (rs.next()) { System.out .println(rs.getString(1) + "\t" + rs.getString(2));// 入如果返回的是int类型可以用getInt() } } } catch (SQLException e) { System.out.println("MySQL操作错误"); e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { conn.close(); } } } JSP页面 <%@ page contentType="text/html;charset=gb2312" %> <%@ page import="java.sql.*" %> <%@ page import="java.util.*"%> <%@ page import="org.cmcc.databaseconnection.*"%> <% request.setCharacterEncoding("utf-8"); %> <% DB conn=new DB(); Statement stmt = conn.createStatement(); String str1 = "select * from yh"; ResultSet result=stmt.executeQuery(str1); if(result.next()) { %> <%=result.getString(2)%>; <% } else { %> <script language="javascript"> alert("XX"); history.back(); </script> <% } %>
javaweb定时器向数据库插入数据
//这里面有 连接数据库和定时的方法。 package com.thinkgem.jeesite.modules.wdmtk.web; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Calendar; import java.util.Date; import java.util.Timer; import com.mysql.jdbc.Connection; import com.mysql.jdbc.Statement; /** * java定时任务,每天定时执行任务 * * @author wls * */ public class TimerManager { // 时间间隔 private static final long PERIOD_DAY = 5 * 60 * 1000; public TimerManager() { Calendar calendar = Calendar.getInstance(); String url = "jdbc:mysql://localhost:3306/jeesite" ; String username = "root" ; String password = "" ; /*** 定制每日2:00执行方法 ***/ calendar.set(Calendar.DAY_OF_YEAR, 0); calendar.set(Calendar.HOUR_OF_DAY,17); calendar.set(Calendar.MINUTE, 35); calendar.set(Calendar.SECOND, 0); Date date = calendar.getTime(); // 第一次执行定时任务的时间 System.out.println(date); System.out.println("before 方法比较:" + date.before(new Date())); // 如果第一次执行定时任务的时间 小于 当前的时间 // 此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。循环执行的周期则以当前时间为准 if (date.before(new Date())) { date = this.addDay(date, 1); System.out.println(date); } Timer timer = new Timer(); NFDFlightDataTimerTask task = new NFDFlightDataTimerTask(); // 安排指定的任务在指定的时间开始进行重复的固定延迟执行。 timer.schedule(task, date, PERIOD_DAY); //连接数据库的 try{ java.sql.Connection con = DriverManager.getConnection(url , username , password ) ; System.out.println("数据库连接成功"); }catch(SQLException se){ System.out.println("数据库连接失败!"); se.printStackTrace() ; } } // 增加或减少天数 public Date addDay(Date date, int num) { Calendar startDT = Calendar.getInstance(); startDT.setTime(date); startDT.add(Calendar.DAY_OF_MONTH, num); return startDT.getTime(); } } //这个是循环的数据 package com.thinkgem.jeesite.modules.wdmtk.web; import java.io.InputStream; import java.sql.DriverManager; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Properties; import java.util.TimerTask; import com.mysql.jdbc.Connection; import com.mysql.jdbc.Statement; public class NFDFlightDataTimerTask extends TimerTask { private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //这个是循环的数据 @Override public void run() { try { // 在这里写你要执行的内容(这里是输出语句 ) System.out.println("执行当前时间" + formatter.format(Calendar.getInstance().getTime())); // System.out.println("这里是要输出的数据"); } catch (Exception e) { System.out.println("-------------解析信息发生异常--------------"); } } } 我想循环的数据是一个sql 语句而且能插入数据库但是不知道怎么操作
这个为什么没办法插入到数据库?
servlet里调用impl中的方法 public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ //将订单写入数据库 int count = 1; HttpSession ses = request.getSession(); List<Member> member = (List<Member>) ses.getAttribute("member"); HashMap<Integer, Product> shopCart = (HashMap<Integer, Product>) ses.getAttribute("SelectedGoods"); Order order = new Order(); for (HashMap.Entry<Integer, Product> entry : shopCart.entrySet()) { for (int i = 0; i < member.size(); i++) { order.setAddress(member.get(i).getAddress()); order.setMname(member.get(i).getName()); order.setTelephone(member.get(i).getTelephone()); } order.setPname(entry.getValue().getName()); order.setPrice(entry.getValue().getPrice()); order.setNum(entry.getValue().getAmount()); order.setNote(entry.getValue().getNote()); order.setOrderid("o"+count); count++; try { DAOFactory.getOrderDAOInstance().doCreate(order); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //跳转 request.getRequestDispatcher("psuccess.jsp").forward(request, response); HttpSession session = request.getSession(); session.removeAttribute("SelectedGoods"); } impl中的方法 public boolean doCreate(Order order)throws Exception{ boolean flag = false; String sql = "INSERT INTO order(orderid,mname,address,telephone,pname,note,price,num)VALUES(?,?,?,?,?,?,?,?)"; this.pstmt = this.conn.prepareStatement(sql); /*System.out.println(order.getOrderid()); System.out.println(order.getMname()); System.out.println(order.getAddress()); System.out.println(order.getTelephone()); System.out.println(order.getPname()); System.out.println(order.getNote()); System.out.println(order.getPrice()); System.out.println(order.getNum());*/ this.pstmt.setString(1,order.getOrderid()); this.pstmt.setString(2,order.getMname()); this.pstmt.setString(3,order.getAddress()); this.pstmt.setString(4,order.getTelephone()); this.pstmt.setString(5,order.getPname()); this.pstmt.setString(6,order.getNote()); this.pstmt.setDouble(7,order.getPrice()); this.pstmt.setInt(8,order.getNum()); if(this.pstmt.executeUpdate()>0){ flag = true; } this.pstmt.close(); return flag; } 报错信息: 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 'order(orderid,mname,address,telephone,pname,note,price,num)VALUES('o1','qwe','qw' at line 1
dbutils插入数据到mysql数据库报莫名其妙地NullpointerException
web层 public class BaseServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { //获取子类字节码对象 Class clazz = this.getClass(); System.out.println(this); //获取method方法名参数,作为获取方法对象的参数 String m = request.getParameter("method"); if(m==null){ m="index"; } System.out.println(m); //获取方法对象 Method method = clazz.getMethod(m, HttpServletRequest.class, HttpServletResponse.class); //让方法执行,返回值为请求转发路径 String s = (String) method.invoke(this, request, response); System.out.println(s); //判断次路径是否为空,不为空请求转发到次路径 if(s != null){ request.getRequestDispatcher(s).forward(request, response); } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(); } } public class OrderServlet extends BaseServlet { /** * 生成订单 * @param request * @param response * @return * @throws Exception */ public String add(HttpServletRequest request, HttpServletResponse response) throws Exception { //0判断用户是否登录 User user = (User) request.getSession().getAttribute("user"); if(user == null) { request.setAttribute("msg", "请先登录~~~~~"); return "/jsp/msg.jsp"; } //1封装数据 Order order = new Order(); //1.1 封装订单id order.setOid(UUIDUtils.getId()); //1.2封装订单时间 order.setOrderTime(new Date()); //1.3封装订单金额 //获取session中的购物车 Cart cart = (Cart) request.getSession().getAttribute("cart"); order.setTotal(cart.getTotalPrice()); //1.4封装订单项 //从购物车中获取购物车项,遍历购物车中的购物车项,得到每个订单项中的数据 for (CartItem cartItem : cart.getCartItem()) { OrderItem oi = new OrderItem(); //设置订单项id oi.setItemid(UUIDUtils.getId()); //设置订单项包含的商品 oi.setProduct(cartItem.getProduct()); //设置包含于那个订单 oi.setOrder(order); //设置订单项中的商品数 oi.setCount(cartItem.getCount()); //设置定单项的小计 oi.setSubTotal(cartItem.getSubTotal()); //添加订单项到order对 象中 order.getItems().add(oi); } //1.5设置用户 order.setUser(user); //调用service,完成对订单的添加 OrderService os = (OrderService) BeanFactory.getBean("OrderService"); os.add(order); //将order对象放入request域 request.setAttribute("order", order); //将以前的购物车中的东西,即将以前的从购物车清除了 request.getSession().removeAttribute("cart"); //请求转发到订单详情页面 return "/jsp/order_info.jsp"; } } service层 public interface OrderService { void add(Order order) throws Exception; } public class OrderServiceImpl implements OrderService { /** * 将订单数据添加到数据库中 * @throws Exception */ @Override public void add(Order order) throws Exception{ try { //1对者两个添加要加入事务 DataSourceUtils.startTransaction(); //2在order添加一条数据 OrderDao od = (OrderDao) BeanFactory.getBean("OrderDao"); od.add2Order(order); //在orderitem中添加n条数据 for (OrderItem oi : order.getItems()) { od.add2OrderItem(oi); } //提交事务 DataSourceUtils.commitAndClose(); } catch (Exception e) { e.printStackTrace(); //事务回滚 DataSourceUtils.rollbackAndClose(); throw e; } } } dao层 public interface OrderDao { void add2Order(Order order) throws Exception; void add2OrderItem(OrderItem oi) throws Exception; } public class OrderDaoImpl implements OrderDao{ /** * 添加一条订单 */ @Override public void add2Order(Order order) throws SQLException { QueryRunner qr = new QueryRunner(); String sql = "insert into order values(?, ?, ?, ?, ?, ?, ?, ?)"; qr.update(DataSourceUtils.getConnection(), sql, order.getOid(), order.getOrderTime(), order.getTotal(), order.getState(), order.getAddress(), order.getName(), order.getPhone(), order.getUser().getUid()); } /** * 添加一条订单项 */ @Override public void add2OrderItem(OrderItem oi) throws SQLException { QueryRunner qr = new QueryRunner(); String sql = "insert into orderitem values(?, ?, ?, ?, ?)"; qr.update(DataSourceUtils.getConnection(),sql, oi.getItemid(), oi.getCount(), oi.getSubTotal(), oi.getProduct().getPid(), oi.getOrder().getOid()); } } 出错后jsp页面显示不出,所报异常 java.lang.NullPointerException at com.mysql.jdbc.ResultSetMetaData.getField(ResultSetMetaData.java:397) at com.mysql.jdbc.ResultSetMetaData.getColumnType(ResultSetMetaData.java:275) at com.mysql.jdbc.MysqlParameterMetadata.getParameterType(MysqlParameterMetadata.java:80) at org.apache.commons.dbutils.AbstractQueryRunner.fillStatement(AbstractQueryRunner.java:197) at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:485) at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:402) at com.local.dao.OrderDaoImpl.add2Order(OrderDaoImpl.java:19) at com.local.service.OrderServiceImpl.add(OrderServiceImpl.java:28) at com.local.web.servlet.OrderServlet.add(OrderServlet.java:82) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.local.web.servlet.BaseServlet.service(BaseServlet.java:36) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.local.web.filter.EncodingFilter.doFilter(EncodingFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.local.web.servlet.BaseServlet.service(BaseServlet.java:36) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.local.web.filter.EncodingFilter.doFilter(EncodingFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException at com.mysql.jdbc.ResultSetMetaData.getField(ResultSetMetaData.java:397) at com.mysql.jdbc.ResultSetMetaData.getColumnType(ResultSetMetaData.java:275) at com.mysql.jdbc.MysqlParameterMetadata.getParameterType(MysqlParameterMetadata.java:80) at org.apache.commons.dbutils.AbstractQueryRunner.fillStatement(AbstractQueryRunner.java:197) at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:485) at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:402) at com.local.dao.OrderDaoImpl.add2Order(OrderDaoImpl.java:19) at com.local.service.OrderServiceImpl.add(OrderServiceImpl.java:28) at com.local.web.servlet.OrderServlet.add(OrderServlet.java:82) ... 28 more 七月 08, 2017 12:01:24 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet [OrderServlet] in context with path [/store] threw exception java.lang.RuntimeException at com.local.web.servlet.BaseServlet.service(BaseServlet.java:44) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.local.web.filter.EncodingFilter.doFilter(EncodingFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) com.local.web.servlet.OrderServlet@8bc0b9 add 我用debug方式看了看了下order在dao用dbutils插入时的数据,数据是封装进去的,就name,address,phone,三项没有封装。并已经接图。以前在mysql中插入数据页是可以插入空数值的, 为何会报NullPointerException,困扰了好些时候了,各位大神有时间的话帮着看一下呀!
求解JDBC使用批处理executeBatch()之后commit(),数据库没有变化。
Java的JDBC使用批处理executeBatch()之后commit(),数据库没有变化。 代码 ``` public static boolean newProblem_state(List<User_t> auditorlist, Problems_t problems)throws ClassNotFoundException, SQLException { KrakenRecord.debug("正在建立关联"+auditorlist.size()); Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(URL, USER, PASSWORD); conn.setAutoCommit(false); // 设置手动提交 String sql = "insert into problemstate_ta (problemstate_problem_id,problemstate_auditor_id,problemstate_state) values(" + problems.getProblems_id() + ",?,0)"; PreparedStatement ps = conn.prepareStatement(sql); for (User_t user_t : auditorlist) { ps.setInt(1, user_t.getUser_id()); ps.addBatch();// 添加到批次 } int[] i = ps.executeBatch();// 提交批处理 conn.commit();// 执行 for (int j : i) { System.out.println(j); } // 关闭资源 ps.close(); conn.close(); return true; } ``` 以上代码运行后,显示: 正在建立关联4 1 1 1 1 auditorlist的size是4正确,打印的四个1应该是executeBatch()正确执行了,但是数据库没有变化,求解 补充:昨晚发现是插入的数据库没反应,也就是problemstate_ta 这个表,无法插入数据,命令没有写错,在Navicat中窗口模式手动插入数据,数据的自动增长id显示+1,插入数据也没有报错,但是刷新表,数据没了,求解
java swing mysql 下面的代码无法连接到数据库,插入数据
import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.sql.*; class Test { /*private String driver="com.mysql.jdbc.Driver"; private String url="jdbc:mysql://localhost:3306/technology"; private String user="root"; private String pass="root";*/ JFrame f; Dialog d1,d2,r_interface; JButton jb1,jb2,b3,b4,b5,r_inquire,r_insert,r_delete; JLabel jl,l1,l2; TextField tf1; TextField tf2; Test() { init(); } public void init() { /*try { Class.forName(driver); } catch (ClassNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }*/ f=new JFrame(); jl=new JLabel("江西农业大学三检工作系统"); jb1=new JButton("登陆"); jb2=new JButton("注册"); f.setVisible(true); f.setBounds(400,200,400,300); f.setLayout(null); f.setResizable(false); jb1.setBounds(110,130,70,30); jb2.setBounds(200,130,70,30); jl.setBounds(110,70,200,50); f.add(jb1); f.add(jb2); f.add(jl); d1=new Dialog(f,"用户登陆",true); d2=new Dialog(f,"用户注册",true); b3=new JButton("确定"); b4=new JButton("取消"); //登陆界面的取消按钮 b5=new JButton("取消"); //注册界面的取消按钮 myevent(); } public void myevent() { f.addWindowListener(new WindowAdapter() //窗口退出事件监听 { public void windowClosing(WindowEvent e) { System.exit(0); } }); d1.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { d1.setVisible(false); } }); d2.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { d2.setVisible(false); } }); b3.addActionListener(new ActionListener() //登陆界面的确定 { public void actionPerformed(ActionEvent e) { dlcg(); } }); b4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { d1.setVisible(false); } }); b5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { d2.setVisible(false); } }); jb1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { denglu(); } }); jb2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { zhuce(); } }); } public void dlcg() { r_interface=new Dialog(f,"登陆成功",true); r_inquire=new JButton("查询"); r_insert=new JButton("插入"); r_delete=new JButton("删除"); r_interface.setLayout(null); r_interface.add(r_inquire); r_inquire.setBounds(80,60,120,30); r_interface.setVisible(true); Connection conn = null; PreparedStatement psta=null; String z_user=String.valueOf(tf1.getText()); String z_pass=String.valueOf(tf2.getText()); try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","root"); psta = conn.prepareStatement("insert into teacher (tname,tage) values (?, ?)"); psta.setString(1,z_user); psta.setString(2,z_pass); psta.executeUpdate(); } catch(ClassNotFoundException e) { e.printStackTrace(); } catch(SQLException e) { e.printStackTrace(); } finally { try { if(conn != null) { conn.close(); } if(psta != null) { psta.close(); } } catch(SQLException e) { e.printStackTrace(); } } /*String z_user=tf1.getText(); String z_pass=tf2.getText(); Connection cn = null; PreparedStatement pst = null; try { String sql="insert into register (r_account,r_password) values (?, ?)"; cn = DriverManager.getConnection(url,user,pass); pst = cn.prepareStatement(sql); pst.setString(1,z_user); pst.setString(2,z_pass); pst.executeUpdate(); } catch(SQLException e) { e.printStackTrace(); } finally { try { if(pst!=null) { pst.close(); } if(cn!=null) { cn.close(); } } catch(SQLException e) { e.printStackTrace(); } } */ } public void denglu() { l1=new JLabel("用户名"); l2=new JLabel("密 码"); tf1=new TextField(); tf2=new TextField(); tf2.setEchoChar('*'); d1.setBounds(470,240,260,230); d1.setLayout(null); d1.setResizable(false); d1.add(l1); d1.add(l2); d1.add(b3); d1.add(b4); d1.add(tf1); d1.add(tf2); tf1.setBounds(80,60,120,30); tf2.setBounds(80,100,120,30); tf1.setFont(new Font("宋体",1,20)); tf2.setFont(new Font("宋体",1,20)); b3.setBounds(50,150,70,30); b4.setBounds(150,150,70,30); l1.setBounds(20,60,50,30); l2.setBounds(20,100,50,30); d1.setVisible(true); } public void zhuce() { l1=new JLabel("注册名"); l2=new JLabel("密 码"); //b3=new JButton("确定"); tf1=new TextField(); tf2=new TextField(); tf2.setEchoChar('*'); d2.setBounds(470,240,260,230); d2.setLayout(null); d2.setResizable(false); d2.add(l1); d2.add(l2); d2.add(b3); d2.add(b5); d2.add(tf1); d2.add(tf2); tf1.setBounds(80,60,120,30); tf2.setBounds(80,100,120,30); tf1.setFont(new Font("宋体",1,20)); tf2.setFont(new Font("宋体",1,20)); b3.setBounds(50,150,70,30); b5.setBounds(150,150,70,30); l1.setBounds(20,60,50,30); l2.setBounds(20,100,50,30); d2.setVisible(true); } public static void main(String[] args) { Connection conn = null; PreparedStatement psta=null; new Test(); } }
求教JAVA应用传入mysql中文乱码
JAVA的应用程序用JDBC连接mysql 类似汉字的查询都成功不了,插入汉字也是???乱码 从数据库返回的汉字正常。 数据库和MyEclipse都是GBK编码 ?useUnicode=true&amp;characterEncoding=UTF-8 这个试过了 没用 查询代码如下 java.sql.Statement stmt = connection.createStatement(); String string="哦"; ResultSet rs = stmt.executeQuery("select * from fix where q='"+string+"'"); while (rs.next()) { System.out.println(rs.getString(3) + "\t" + rs.getString(4)); } 求解怎么传入汉字
数据库已经改成utf8b4但Emoji表情符号录入MySQL数据库还是报错
数据库已经改成了utf8mb4了,数据库的列也改成utf8mb4, 但是插入表情还是报错: Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F...' for column 'CONTENT' at row 1 数据库版本是5.5.57 jdbc驱动包版本是5.1.32 框架是spring mvc +mybatis+spring 下面是各种截图,求大神指教,求解决 ![图片说明](https://img-ask.csdn.net/upload/201802/27/1519700159_997619.png) ![图片说明](https://img-ask.csdn.net/upload/201802/27/1519700173_25418.png) ![图片说明](https://img-ask.csdn.net/upload/201802/27/1519700342_482356.png) ![图片说明](https://img-ask.csdn.net/upload/201802/27/1519700350_643143.png)
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载 点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。 ...
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
Python 基础(一):入门必备知识
Python 入门必备知识,你都掌握了吗?
兼职程序员一般可以从什么平台接私活?
这个问题我进行了系统性的总结,以下将进行言简意赅的说明和渠道提供,希望对各位小猿/小媛们有帮助~ 根据我们的经验,程序员兼职主要分为三种:兼职职位众包、项目整包和自由职业者驻场。 所谓的兼职职位众包,指的是需求方这边有自有工程师配合,只需要某个职位的工程师开发某个模块的项目。比如开发一个 app,后端接口有人开发,但是缺少 iOS 前端开发工程师,那么他们就会发布一个职位招聘前端,来配合公司一...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
写了很久,这是一份最适合/贴切普通大众/科班/非科班的『学习路线』
说实话,对于学习路线这种文章我一般是不写的,大家看我的文章也知道,我是很少写建议别人怎么样怎么样的文章,更多的是,写自己的真实经历,然后供大家去参考,这样子,我内心也比较踏实,也不怕误导他人。 但是,最近好多人问我学习路线,而且很多大一大二的,说自己很迷茫,看到我那篇 普普通通,我的三年大学 之后很受激励,觉得自己也能行,(是的,别太浪,你一定能行)希望我能给他个学习路线,说...
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的...
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Python经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
基础拾遗:除了&和&&的区别,你还要知道位运算的这5个运算符
&和&&都可作逻辑与的运算符,表示逻辑与(and),&是位运算符,你还需要知道这5个位运算符,基础很重要,云运算其实很骚!
相关热词 c#处理浮点数 c# 生成字母数字随机数 c# 动态曲线 控件 c# oracle 开发 c#选择字体大小的控件 c# usb 批量传输 c#10进制转8进制 c#转base64 c# 科学计算 c#下拉列表获取串口
立即提问