【问题标题】:Inserting Integer Values into MySQL Database using Variables使用变量将整数值插入 MySQL 数据库
【发布时间】:2013-03-26 18:56:35
【问题描述】:
     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);

【问题讨论】:

    标签: java mysql sql integer


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      你需要告诉Java把你的整数变量转换成字符串,把你的sql赋值语句改成:

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

      【讨论】:

        【解决方案3】:

        试试这个

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

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

        【讨论】:

          猜你喜欢
          • 2017-03-16
          • 1970-01-01
          • 2018-08-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-02
          相关资源
          最近更新 更多