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);
答案 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的语法是错误的。变量应该没有引用