String strConnString = ConfigurationManager.ConnectionStrings["CallcenterConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand();
cmd.Parameters.Add("@CallType", SqlDbType.VarChar).Value = ddlCalltype.SelectedValue.ToString();
cmd.Parameters.Add("@Format", SqlDbType.VarChar).Value = ddlFormat.SelectedValue.ToString();
cmd.Parameters.Add("@disposition", SqlDbType.VarChar).Value = ddlDisp.SelectedValue.ToString();
cmd.Parameters.Add("@SubDisposition", SqlDbType.VarChar).Value = ddlSubdisp.SelectedValue.ToString();
cmd = new SqlCommand("UserManagement", con);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
da.SelectCommand = cmd;
da.Fill(dt);
gvDetails.DataSource = dt;
gvDetails.DataBind();
gvDetails.Visible = true;
0
A
回答
2
此行分配的SqlCommand
新實例cmd
爲第二時間,而不是使用現有的SqlCommand
包含聲明參數,因此去除上面已經聲明的所有參數:
cmd = new SqlCommand("UserManagement", con);
使用參數化存儲過程管理SqlCommand
的正確方法應該是這樣的,使用using
語句來管理執行過程中的系統資源(最好的情況下,使用try...catch...finally
塊要處理SqlException
):
String strConnString = ConfigurationManager.ConnectionStrings["CallcenterConnectionString"].ConnectionString;
var dt = new DataTable();
using (var con = new SqlConnection(strConnString))
{
con.Open();
using (var cmd = new SqlCommand("UserManagement", con))
{
cmd.Parameters.Add("@CallType", SqlDbType.VarChar).Value = ddlCalltype.SelectedValue.ToString();
cmd.Parameters.Add("@Format", SqlDbType.VarChar).Value = ddlFormat.SelectedValue.ToString();
cmd.Parameters.Add("@disposition", SqlDbType.VarChar).Value = ddlDisp.SelectedValue.ToString();
cmd.Parameters.Add("@SubDisposition", SqlDbType.VarChar).Value = ddlSubdisp.SelectedValue.ToString();
cmd.CommandType = CommandType.StoredProcedure;
// using SqlDataAdapter
using (var da = new SqlDataAdapter)
{
da.SelectCommand = cmd;
da.Fill(dt);
}
// using DataTable.Load directly
// dt.Load(cmd.ExecuteReader());
}
con.Close();
}
// other stuff
注:總之你可以使用cmd.CommandText = "UserManagement";
替代的問題cmd
第二次分配,因此它只是提供存儲過程的名稱而是分配另一個SqlCommand
實例。而不是ExecuteNonQuery()
嘗試使用ExecuteReader()
與DataTable.Load()
方法。
+0
謝謝.....它工作 – user31121992
3
你的代碼是一團糟。對我來說,它看起來像你剛剛使用從其他地方複製和粘貼,並沒有真正理解那裏發生了什麼。
應該是這樣的:
String strConnString = ConfigurationManager.ConnectionStrings["CallcenterConnectionString"].ConnectionString;
DataTable dt = new DataTable();
using(var con = new SqlConnection(strConnString))
{
using(var cmd = new SqlCommand("UserManagement", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@CallType", SqlDbType.VarChar).Value = ddlCalltype.SelectedValue.ToString();
cmd.Parameters.Add("@Format", SqlDbType.VarChar).Value = ddlFormat.SelectedValue.ToString();
cmd.Parameters.Add("@disposition", SqlDbType.VarChar).Value = ddlDisp.SelectedValue.ToString();
cmd.Parameters.Add("@SubDisposition", SqlDbType.VarChar).Value = ddlSubdisp.SelectedValue.ToString();
using(var da = new SqlDataAdapter())
{
da.SelectCommand = cmd;
da.Fill(dt);
}
}
}
gvDetails.DataSource = dt;
gvDetails.DataBind();
gvDetails.Visible = true;
相關問題
- 1. 過程或函數期望沒有提供參數 - 但參數WAS提供
- 2. 過程或函數期望沒有提供的參數?
- 3. 「過程或函數期望沒有提供的參數。」
- 4. 存儲過程或函數期望沒有提供的參數
- 5. 程序或函數期望沒有提供的參數
- 6. 過程或函數'stored_pr'期望參數'@name',這是沒有提供
- 7. 企業庫「過程或函數期望沒有提供的參數」錯誤
- 8. 過程或函數'spGetCountryByNames'期望參數'@countryName',這是沒有提供
- 9. EntityFramework過程或函數''期望參數'',這是不提供
- 10. 過程或函數「」期望參數「,這是不提供
- 11. 過程或函數期望參數錯誤,但未提供
- 12. 過程或函數「」期望參數「這是不提供」,
- 13. 過程或函數期望未提供的參數。的ExecuteNonQuery
- 14. C#存儲過程或函數期望不提供參數
- 15. sp_executesql - 過程或函數期望不提供的參數
- 16. 過程或函數「」期望參數'',這是不提供的
- 17. SSRS過程或函數「」期望參數「」,但未提供
- 18. 過程或函數期望未提供的參數#2
- 19. 過程或函數'employee_pro'需要參數'@empid',它沒有提供
- 20. 過程或函數'usp_User_Info2'需要參數'@UserName',它沒有提供
- 21. 過程或函數'usp_StoredProcName'需要參數'@inputVal',它沒有提供
- 22. 過程或函數期望沒有提供的參數 - 參數在存儲過程(我認爲)
- 23. 程序或函數'學生'期望參數'@SortExpression',這是沒有提供
- 24. 程序或函數'biinsertcustomer'期望參數'@custid',不提供
- 25. SqlDataSource過程或函數期望沒有指定的參數
- 26. 值java.sql.SQLException:過程或函數...希望...的參數,但未提供
- 27. 過程或函數'spDelRegistrant'需要參數'@RegistrantId',但沒有提供
- 28. SqlCommand.Parameters.AddWithValue問題:過程或函數X需要參數@Y,它沒有提供
- 29. SQL Server存儲過程「過程或函數期望參數,該參數未提供。」
- 30. {「參數化查詢'(@Usr_Name nvarchar(4000).... nv'期望參數'@Usr_Name',它沒有提供。」}
您正在使用'cmd = new SqlCommand(「UserManagement」,con);''第二次初始化'SqlCommand'的另一個實例,因此現有參數已被刪除。改用'cmd.CommandText =「UserManagement」'(如果需要,我會在幾分鐘內寫一個答案來解決這個問題)。 –