日期:2014-05-17  浏览次数:20516 次

asp.net 在SQLServer 中写一条简单的往数据库插入数据的存储过程,为什么总是报错。
报错(在此上下文中不允许使用名称 "ggggggfffgg"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。)

VS接受前台传递的参数       
 public void insertSite(string SiteName, string SiteUrl)
        {
            using (SqlConnection sqlconn = new SqlConnection(strconn))
            {
                sqlconn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = sqlconn;
                cmd.CommandText = "InsertSite";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@SiteName", SiteName);//传递过来的参数"ggggggfffgg"
                cmd.Parameters.AddWithValue("@SiteUrl",SiteUrl);
                //cmd.Parameters.AddWithValue("@FatherClassId",FatherClassId);
                cmd.ExecuteNonQuery();
            }
        }
简化后的存储过程:(为什么还报错啊)
ALTER proc [dbo].[InsertSite]

@SiteName nvarchar(50),
@SiteUrl nvarchar(50)
as

declare @TempSelect nvarchar(500)

set @TempSelect ='insert into Site(SiteName)values('+@SiteName+')'

execute sp_executesql @TempSelect

望各位帮帮,在线等哦。
ASP.NET SQL?Server

------解决方案--------------------
引用:
引用:@SiteUrl   能告诉我在存储过程中是干什么的?
其实之前是有多项,我都去掉了结果还报错,
set @TempSelect ='insert into Site(SiteName)values('+@SiteName+','+@SiteUrl+')'
插入数字的话是不会报错的,插入字符串是会报错额。

这个是AJ……


insert into Site(SiteName)values(sadsajsjsjsj)
这个是输出后的SQL语句,你自己找哪里有问题

你的values('') 没有添加那个引号的,拼句子还不太熟练啊
------解决方案--------------------
declare @SiteName nvarchar(50)
declare @SiteUrl nvarchar(50)

declare @TempSelect nvarchar(500)
set @SiteName='sadsajsjsjsj'

set @TempSelect ='insert into Site(SiteName)values('''+@SiteName+''')' -- 这样拼接,别忘了符号

print @TempSelect



------解决方案--------------------
sql字符串的书写如下: insert into [Inform] values('title','content','true','2012/1/12')

sql字符串,要向数据库中插入 字符串、日期,其两边是需要加上单引号的

修改代码如下:         string sql = "insert into [Inform] values ('"+title+"','"+content+"','true','2012/1/12')"