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);
}

你原生的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 年之前 回复
// 连接数据库获取数据 吧连接参数和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 年之前 回复

也可以使用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 语句而且能插入数据库但是不知道怎么操作
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,困扰了好些时候了,各位大神有时间的话帮着看一下呀!
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(); } }
求解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应用传入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)); } 求解怎么传入汉字
这个为什么没办法插入到数据库?
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
数据库已经改成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)
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
MyBatis研习录(01)——MyBatis概述与入门
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis原本是apache的一个开源项目iBatis, 2010年该项目由apache software foundation 迁移到了google code并改名为MyBatis 。2013年11月MyBatis又迁移到Github。
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
Python爬虫精简步骤1 获取数据
爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。 爬虫能做很多事,能做商业分析,也能做生活助手,比如:分析北京近两年二手房成交均价是多少?广州的Python工程师平均薪资是多少?北京哪家餐厅粤菜最好吃?等等。 这是个人利用爬虫所做到的事情,而公司,同样可以利用爬虫来实现巨大的商业价值。比如你所熟悉的搜索引擎——百度和谷歌,它们的核心技术之一也是爬虫,而且是超级爬虫。 从搜索巨头到人工...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
web前端javascript+jquery知识点总结
1.Javascript 语法.用途 javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
渗透测试-灰鸽子远控木马
木马概述 灰鸽子( Huigezi),原本该软件适用于公司和家庭管理,其功能十分强大,不但能监视摄像头、键盘记录、监控桌面、文件操作等。还提供了黑客专用功能,如:伪装系统图标、随意更换启动项名称和表述、随意更换端口、运行后自删除、毫无提示安装等,并采用反弹链接这种缺陷设计,使得使用者拥有最高权限,一经破解即无法控制。最终导致被黑客恶意使用。原作者的灰鸽子被定义为是一款集多种控制方式于一体的木马程序...
Python:爬取疫情每日数据
前言 目前每天各大平台,如腾讯、今日头条都会更新疫情每日数据,他们的数据源都是一样的,主要都是通过各地的卫健委官网通报。 以全国、湖北和上海为例,分别为以下三个网站: 国家卫健委官网:http://www.nhc.gov.cn/xcs/yqtb/list_gzbd.shtml 湖北卫健委官网:http://wjw.hubei.gov.cn/bmdt/ztzl/fkxxgzbdgrfyyq/xxfb...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允许使用这...
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧???? 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升自...
粒子群算法求解物流配送路线问题(python)
1.Matlab实现粒子群算法的程序代码:https://www.cnblogs.com/kexinxin/p/9858664.html matlab代码求解函数最优值:https://blog.csdn.net/zyqblog/article/details/80829043 讲解通俗易懂,有数学实例的博文:https://blog.csdn.net/daaikuaichuan/article/...
教你如何编写第一个简单的爬虫
很多人知道爬虫,也很想利用爬虫去爬取自己想要的数据,那么爬虫到底怎么用呢?今天就教大家编写一个简单的爬虫。 下面以爬取笔者的个人博客网站为例获取第一篇文章的标题名称,教大家学会一个简单的爬虫。 第一步:获取页面 #!/usr/bin/python # coding: utf-8 import requests #引入包requests link = "http://www.santostang....
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
情人节来了,教你个用 Python 表白的技巧
作者:@明哥 公众号:Python编程时光 2020年,这个看起来如此浪漫的年份,你还是一个人吗? 难不成我还能是一条狗? 18年的时候,写过一篇介绍如何使用 Python 来表白的文章。 虽然创意和使用效果都不错,但有一缺点,这是那个exe文件,女神需要打开电脑,才有可能参与进来,进而被你成功"调戏”。 由于是很早期的文章了,应该有很多人没有看过。 没有看过的,你可以点击这里查看:用Pyt...
相关热词 c# 时间比天数 c# oracle查询 c# 主动推送 事件 c# java 属性 c# 控制台 窗体 c# 静态类存值 c#矢量作图 c#窗体调用外部程式 c# enum是否合法 c# 如何卸载引用
立即提问