0
     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);
4

3 回答 3

2

您的插入语句中有 SQL 错误。我不知道为什么您+的语句中有这些字符,但我猜您正试图将这些值连接到语句中。但是在您的尝试中,+字符是字符串的一部分。尝试插入双引号字符来结束和开始字符串以连接在一起以形成插入语句:

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

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

于 2013-03-26T19:04:31.083 回答
0

尝试这个

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

您在字符串中使用 vars 的语法是错误的。vars 应该不在引号内

于 2013-03-26T19:06:23.137 回答
0

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

String sql="insert into id values('"
    + name + "',12," + fs + ", " + se + ","
    + th + "," + ft + "," + f + "," + si + "," + sv + "," + ei + ")";
于 2013-03-26T19:04:19.503 回答