A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑丹丹1990 中级黑马   /  2013-4-5 15:00  /  890 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑丹丹1990 于 2013-4-5 18:49 编辑

insert into dbo.T_SalarySheet values(newid(),[Year]=2012,[Month]=12,DepartmentId='a9124d74-9ceb-49cc-9d74-1ee56c4e2737‘)

错误提示:消息 128,级别 15,状态 1,第 1 行
在此上下文中不允许使用名称 "Year"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。

why?????

2 个回复

倒序浏览
如果你是往表里面的所有列插入数据的话,这时候可以省略列名,但是如果你不是往所有的列插入数据,而是向部分列插入数据的话此时你必须将列名写出来。不知道你是属于那种情况,不过你可以把列名去掉试试,或者将表的所有列名补齐,而不是在values里面写,比如
insert into dbo.T_SalarySheet values(newid(),2012,12,'a9124d74-9ceb-49cc-9d74-1ee56c4e2737‘)
希望对你有所帮助吧!
回复 使用道具 举报
sql字符串,要向数据库中插入变量时,其两边是需要加上单引号的
修改代码如下:
"insert into dbo.T_SalarySheet values('"+newid()+"',2012,12,'a9124d74-9ceb-49cc-9d74-1ee56c4e2737‘)"

原理:拼接字符串,假如如我们有a和b两个变量,要插入table里,一般首先会想到:
String sql = "insert into table values('+a+','+b+')";
但因为sql是String类型,我们要拼接的是字符串,所以,蓝色语句部分两边都应该有双引号,就变成:
string sql = "insert into table values('"+a+"','"+b+"')";
所以,可以理解为要向数据库中插入变量时,其两边是需要加上单引号,但真正原因是要符合拼接字符串规则
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马