问题描述
- 向数据库中传入String变量
- String sql = ""insert into User values('"" + username + ""''""+
password1 + ""''"" + sex + ""''"" + phoneNumber + ""''""+
email + ""''"" + hobby + ""')"";
st.executeUpdate(sql);应该是这里 哪里错了呢
com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'User' 附近有语法错误。
解决方案
user在sqlserver中是关键字,需要[user]方式表示 String sql = ""insert into [User] values('"" + username + ""''""+ password1 + ""''"" + sex + ""''"" + phoneNumber + ""''""+email + ""''"" + hobby + ""')"";
解决方案二:
String sql = ""insert into User values(???????)"";
然后
PreparedStatement pstm = conn.prepareStatement(sql);
pstm.setString(1username);
.
.
.
pstm.executeUpdate();
这个就不需要拼接
解决方案三:
拿syso输出一下就知道了
另外这样写程序容易被sql注入 建议用楼上写法
解决方案四:
个人觉得还是不要用user一个表名的好
解决方案五:
user是关键字或者你可以给它起个别名
解决方案六:
支持下 danielinbiti, 不同数据库都有很多不同的保留字,sqlserver里面可以用 []
解决方案七:
拿syso输出一下就知道了
解决方案八:
建议二楼的方法。不然,单双引号很容易造成sql语句有问题。
解决方案九:
User在SQL Server作为dbo.User可以被识别出。
只是在代码中美哟解决对象命名。这需要在SQLServer和代码两边协调来解决。
解决方案十:
建议2楼,不然注入式攻击
时间: 2025-01-21 17:16:56