2013-04-08 127 views
-2

我是编程新手,特别是在使用sql server时。我有一个带有文本框和提交按钮的用户页面。当用户输入信息到文本框并按下按钮时,信息将被添加到数据库中。数据库中有一列用户标识符,应在所有信息添加到数据库后创建。用户标识符应由UserLastName和AutoIncrementNumber(自动分配给新行的数据库的列)组成。我有一个用于此UserID的函数专栏,我不知道如何使一切工作。请帮帮我。 谢谢!使用函数插入sql数据库

这里是代码:

 using (SqlConnection conn = new SqlConnection(@"Data Source=MyDataBase;Initial  Catalog=MyDataBase;Integrated Security=True;")) 


     SqlCommand CmdSql = new SqlCommand 
     ("INSERT INTO [tbluser] ([UserID],[UserLastName], [UserFirstName], [UserMiddleInitial] SELECT [dbo].[usernamehandle](@UserFirstName),@UserLastName, @UserFirstName, @UserMiddleInitial", conn); 
     conn.Open(); 
     CmdSql.Parameters.AddWithValue("@UserLastName", txtNewUserLN.Text.ToString()); 
     CmdSql.Parameters.AddWithValue("@UserFirstName", txtNewUserFN.Text.ToString()); 
     CmdSql.Parameters.AddWithValue("@UserMiddleInitial", txtNewUserMI.Text.ToString()); 
     CmdSql.Connection = conn; 
     CmdSql.ExecuteNonQuery(); 
     conn.Close(); 

这里是功能:

USE [MyDataBase] 
GO 
/****** Object: UserDefinedFunction [dbo].[usernamehandle] Script Date: 04/07/2013 17:25:23 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER FUNCTION [dbo].[usernamehandle] 
(@newuserName nchar(10))returns nchar(10) 

AS 
BEGIN 
DECLARE @s2 nchar(256) 
SET @s2 = '' 
DECLARE @p int 
DECLARE @ULN char(256) 
DECLARE @UNAI int 
SELECT @ULN = UserLastName FROM tblUser 
SELECT @UNAI = UserNameAutoIncre FROM tbluser 
SET @s2 = @UNAI 
while @p <=6 begin 
DECLARE @c int 
SET @c = ascii(substring(@newUserName, @p, 1)) 
SET @s2 += char(@c) 
end 
return @s2 
end 
+0

我不确定你为什么使用这样的SQL函数?我想你应该看看存储过程和数据源对象。 数据源对象将为您生成大量代码,并且是开始编写新程序的好地方。但在代码的上下文中,存储过程可能会返回一个数据集或输出参数。 – Mayhem50 2013-04-08 02:57:21

回答

1

尝试直接调用函数在SQL:

注:请检查该函数的参数。我假设参数是用户的名字。

SqlCommand CmdSql = new SqlCommand 
     ("INSERT INTO [tbluser] ([UserID],[UserLastName], [UserFirstName], [UserMiddleInitial]) SELECT [dbo].[usernamehandle](@UserFirstName), @UserLastName, @UserFirstName, @UserMiddleInitial, conn); 
+0

谢谢你的回应。你能告诉我,我应该如何声明标量变量UserID? – Eugene 2013-04-08 02:21:08

+0

如果你使用上面的帖子,用户ID变量不再需要 – 2013-04-08 02:23:53

+0

对不起,我的意思是@newuserName。因为它向我显示以下错误 – Eugene 2013-04-08 02:34:55

0

不能使用功能来插入数据,仅用于select语句功能是指只对DDL不是DML,为您必须使用存储过程。