使用Java插入mySql

使用Java插入mySql,java,mysql,Java,Mysql,我试图在sql数据库中插入一些东西,但我的代码不起作用。我对这有点陌生,但在尝试了一些不同的东西后,我仍然被卡住了。关于如何让代码正常工作,有什么想法吗?我实际上没有收到任何错误,但信息从未输入数据库。提前谢谢 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class sqlIns {

我试图在sql数据库中插入一些东西,但我的代码不起作用。我对这有点陌生,但在尝试了一些不同的东西后,我仍然被卡住了。关于如何让代码正常工作,有什么想法吗?我实际上没有收到任何错误,但信息从未输入数据库。提前谢谢

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class sqlIns
{
    public static void main (String []args)
    {
        String host = "jdbc:mysql://localhost:3306/tempdatat";
        String user = "root";
        String pass = "Nathan1";

        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection(host,user, pass);
            PreparedStatement statement = con.prepareStatement("Insert Into tempdata(id, timedata, tempdata) VALUES (?, ?, ?)");
            statement.setInt(1, 1);
            statement.setInt(2, 30);
            statement.setDouble(3, 78.30);
            statement.execute();
            statement.close();
            con.close();
        }
        catch(Exception e)
        {
             System.out.println(e.getMessage());
        }
        finally
        {
                 System.out.println("Done!");
        }

     }
}

您的代码实际上相当不错,而且几乎正确

您唯一的错误是,对于INSERT,您需要使用:

statement.executeUpdate();

数据库表名称在主机变量和sql查询中不同。确保两个位置的数据库表名都正确。并且,在sql查询中使用所有小写字母

试试看:

insert into tempdata(id, timedata, tempdata) values (?, ?, ?)
而不是:

Insert Into tempdata(id, timedata, tempdata) VALUES (?, ?, ?)

execute()
有什么问题?@CostisAivalis没有,没有OP编写的代码没有问题。@CostisAivalis正在链接OP未使用的内容。。。真的没什么变化。尝试查看JavaDoc中的
PreparedStatement
您是对的!我以为这是一个声明。我没有仔细研究代码。你发布的代码没有问题。是否打印“完成!”?您应确保始终打印
con
语句closed@RC. 嗯?是的,作为良好实践,您应该关闭语句,他也关闭连接。唯一的改进是移动范围并在
中最终执行它block@Brian,哦,我错过了语句行,但是是的,这应该放在
中最后
我遇到了同样的问题,但是MS Access不是MySQL,
con.setAutoCommit(false)
在执行查询和
con.setAutoCommit(true)之前
执行后解决了我的问题。