2013-04-08 126 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,爲您必須使用存儲過程。

相關問題