黑马程序员技术交流社区
标题:
关于数据库的简单错误
[打印本页]
作者:
郑丹丹1990
时间:
2013-4-5 15:00
标题:
关于数据库的简单错误
本帖最后由 郑丹丹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?????
作者:
管章鹏
时间:
2013-4-5 17:44
如果你是往表里面的所有列插入数据的话,这时候可以省略列名,但是如果你不是往所有的列插入数据,而是向部分列插入数据的话此时你必须将列名写出来。不知道你是属于那种情况,不过你可以把列名去掉试试,或者将表的所有列名补齐,而不是在values里面写,比如
insert into dbo.T_SalarySheet values(newid(),2012,12,'a9124d74-9ceb-49cc-9d74-1ee56c4e2737‘)
希望对你有所帮助吧!
作者:
韦俊琳
时间:
2013-4-5 18:29
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+
"
')
";
所以,可以理解为要向数据库中插入
变量
时,其两边是需要加上单引号,但真正原因是要符合拼接字符串规则
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2