2 immortal hunter Immortal_Hunter 于 2015.06.17 00:35 提问

向数据库中传入String变量
sql

String sql = "insert into User values('" + username + "','"+
password1 + "','" + sex + "','" + phoneNumber + "','"+
email + "','" + hobby + "')";
st.executeUpdate(sql);

应该是这里 哪里错了呢
com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'User' 附近有语法错误。

13个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.06.17 00:56
已采纳
 user在sqlserver中是关键字,需要[user]方式表示
 String sql = "insert into [User] values('" + username + "','"+ 
password1 + "','" + sex + "','" + phoneNumber + "','"+
email + "','" + hobby + "')";
z_vincent
z_vincent   2015.06.17 00:46

String sql = "insert into User values(?,?,?,?,?,?,?)";
然后
PreparedStatement pstm = conn.prepareStatement(sql);
pstm.setString(1,username);
.
.
.
pstm.executeUpdate();
这个就不需要拼接

zzxzz00001
zzxzz00001   2015.06.17 07:39

拿syso输出一下就知道了
另外这样写程序容易被sql注入 建议用楼上写法

tongyi55555
tongyi55555   2015.06.17 07:40

个人觉得还是不要用user一个表名的好

u012216727
u012216727   Ds   Rxr 2015.06.17 08:26

user是关键字或者你可以给它起个别名

edouardzyc
edouardzyc   2015.06.17 09:00

支持下 danielinbiti, 不同数据库都有很多不同的保留字,sqlserver里面可以用 []

u013370108
u013370108   2015.06.17 09:33

拿syso输出一下就知道了

heart_mine
heart_mine   2015.06.17 09:34

建议二楼的方法。不然,单双引号很容易造成sql语句有问题。

frank_20080215
frank_20080215   2015.06.17 09:50

User在SQL Server作为dbo.User可以被识别出。
只是在代码中美哟解决对象命名。这需要在SQLServer和代码两边协调来解决。

chwrYy
chwrYy   2015.06.17 11:16

建议2楼,不然注入式攻击

共13条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片