我有如下的一条插入语句:
Insert into SendSmg (SrcNum,DstNum,MsgStr) values (SenderNum,ReceiverNum,msgcontent)
其中SenderNum,ReceiverNum,msgcontent这三个都是变量(获取其他地方的数据),但是在运行时出现如下错误:在此上下文中不允许使用 'SenderNum'。此处只允许使用常量、表达式或变量。不允许使用列名。请问这个要怎么解决啊??
谢谢!!!

解决方案 »

  1.   


    declare @SenderNum varchar(20)
    declare @ReceiverNum varchar(20)
    declare @msgcontent varchar(20)Insert into SendSmg (SrcNum,DstNum,MsgStr) 
    values (@SenderNum,@ReceiverNum,@msgcontent)
      

  2.   

    -- 存储过程:CREATE TABLE SENDSMG(SrcNum INT,DstNum INT,MsgStr NVARCHAR(200))
    GOCREATE PROC PC_SENDSMG
        @SENDERNUM   INT,
        @RECEIVERNUM INT,
        @MSGCONTENT  NVARCHAR(200)
    AS
    BEGIN
        Insert into SendSmg (SrcNum,DstNum,MsgStr) values (@SenderNum,@ReceiverNum,@msgcontent)
    END
    GOEXEC PC_SENDMSG 1,9,'插入一条测试信息'SELECT * FROM SENDSMGDROP PROC PC_SENDSMG
    DROP TABLE SENDSMG
      

  3.   

    谢谢aw511(点点星灯) !
    可是我是要在C#代码中添加插入数据库代码,你写的那些声明在C#没办法用..我有用"& SenderNum &"试过,但提示的错误是"运算符“&”无法应用于“string”和“string”类型的操作数"
    请问这个问题要怎么解决呢??我用的是SQLServer,那三个变量都是string型,插入的表列都是VARCHAR型
      

  4.   

    string strTmp="Insert into SendSmg (SrcNum,DstNum,MsgStr) values ("+SenderNum+","+ReceiverNum+","+msgcontent+")"
    然后再执行,建议你使用存储过程
      

  5.   

    string strTmp="Insert into SendSmg (SrcNum,DstNum,MsgStr) values ('"+SenderNum+"','"+ReceiverNum+"','"+msgcontent+"')"
      

  6.   

    非常谢谢baoshan(石头) !!
    问题解决了^_^
    也谢谢其他两位~!