使用变量将整数值插入MySQL数据库

时间:2013-03-26 18:56:36

标签: java mysql sql integer

     Class.forName("com.mysql.jdbc.Driver");
     Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
     "root", "mysecret");
     System.out.println("Connected to Database");
     Statement stmt1 = conn.createStatement();
     ResultSet rs1=null;
     String sql="insert into id
     values('"+name+"',12,+fs+,+se+,+th+,+ft+,+f+,+si+,+sv+,+ei+)";
     System.out.println("sql:"+sql);
     stmt1.executeUpdate(sql);     

名称变量在此处未包含的定义部分中处理,输出为

     sql:insert into id values('Golum',12,+fs+,+se+,+th+,+ft+,+f+,+si+,+sv+,+ei+);

它还说SQL语法中的错误,它指的是变量fs,se,th,ft,f,si,sv和ei。基本上我试图使用变量将整数传递给MySQL数据库。这些变量的定义就是这样

    int fs = x21;
    int se = y21;

x21和y21分别存储鼠标点击坐标x和y。下面的代码显示坐标正确传递。错误在SQL语法中。我想知道使用这种技术将整数传递给SQL数据库的正确语法是什么。

    System.out.println(fs);

3 个答案:

答案 0 :(得分:2)

您的insert语句中有SQL错误。我不知道为什么你的语句中有+个字符,但我猜你是在试图将值连接到语句中。但在您的尝试中,+字符是字符串的一部分。尝试插入双引号字符结束并启动字符串以连接在一起以形成insert语句:

String sql="insert into id values('"+name+"',12, " +
    fs+","+se+","+th+","+ft+","+f+","+si+","+sv+","+ei+")";

当然,只要您将可能来自用户的值连接到SQL语句,就很容易受到SQL injection的攻击。如果这些是用户值,则使用带有绑定变量的PreparedStatement

答案 1 :(得分:0)

您需要告诉Java将整数变量转换为字符串,将您的sql赋值语句更改为:

String sql="insert into id values('"
    + name + "',12," + fs + ", " + se + ","
    + th + "," + ft + "," + f + "," + si + "," + sv + "," + ei + ")";

答案 2 :(得分:0)

试试这个

String sql="insert into id values('"+name+"',12,"+fs +","+se+","+th+","+ft+","+f+","+si+","+sv+","+ei+")";

在字符串中使用vars的语法是错误的。变量应该没有引用