2010-04-23 212 views
0

我在c#中的sql查詢有問題,基本上它是帶參數的內聯查詢,但是當我運行它時,它告訴我參數1或參數2不存在Sql查詢參數。執行查詢時不會讀取參數

這裏宣佈在頁面的頂部我的查詢作爲市民:

public const string InsertStmtUsersTable = "insert into Users (username, password, email, userTypeID, memberID, CM7Register) " + 
       "Values(@username, @password, @email, @userTypeID, @memberID,@CM7Register); select @@identity"; 

這是我分配的參數的代碼,我知道我有問題,所以我兩次分配PARAMS:

Username =(cmd.Parameters["@username"].Value = row["username"].ToString()) as string; 
cmd.Parameters["@username"].Value = row["username"].ToString(); 

1 methopd它會調用這個查詢,並試圖插入到表中,這裏是代碼:

Result = Convert.ToInt32(SqlHelper.ExecuteScalar(con, CommandType.Text,InsertStmtUsersTable)); 

確切的錯誤信息是:必須聲明變量「@用戶名」。 難道這代碼是一個問題,因爲以前所有的編碼在這個using語句聲明的,除了查詢的聲明,這裏使用的語句:

using (SqlCommand cmd = new SqlCommand(InsertStmtUsersTable, con)) 
+0

我沒有看到CMD是如何在提供SQLHelper使用的關係是什麼 – 2010-04-23 19:44:55

+0

遐我剛剛意識到提供SQLHelper代碼爲調用另一個類來執行,所以我更改了代碼,取出了sqlhelper,現在它運行正常 – Developer 2010-04-29 20:20:59

回答

1

這只是形形色色的醜惡。這可能是簡單了很多(雖然我不知道什麼提供SQLHelper呢。?

using(SqlConnection conn = new SqlConnection(connString)) 
{ 
    conn.Open(); 

    SqlCommand command = new SqlCommand(InsertStmtUsersTable, conn); 
    command.CommandType = CommandType.Text; 

    command.Parameters.Add(new SqlParameter("username", userNameString)); 
    command.Parameters.Add(new SqlParameter("password", passwordString)); 
    command.Parameters.Add(new SqlParameter("email", emailString)); 
    command.Parameters.Add(new SqlParameter("userTypeId", userTypeId)); 
    command.Parameters.Add(new SqlParameter("memberId", memberId)); 
    // Rest of your Parameters here 

    var result = (int)command.ExecuteScalar(); 
} 
+0

SqlHelper類是一個實用程序類,可用於在SQL Server數據庫中執行命令。您可以在這裏瞭解更多信息: http ://forums.asp.net/t/941983.aspx – Developer 2010-04-23 19:55:32