[英]PlaceHolder duplicating on button click-Insert Error too many arguments
[英]"Too many arguments" on SECOND button click, C#
我有一个在单击按钮时执行搜索的 sproc。 搜索页面只是一个组合框和一个文本框。 用户从他们想要搜索的组合框中选择列并在文本框中输入值。 无论从组合框中选择哪个值,sproc 都会在第一次尝试时正常执行。 对搜索按钮的任何后续点击都会给我“参数太多”错误。
C#
public partial class InitialDebt : Form
{
static string conn = System.Configuration.ConfigurationManager.ConnectionStrings["myConnStr"].ConnectionString;
static SqlConnection misc = new SqlConnection(conn);
static SqlCommand initDebt = misc.CreateCommand();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(initDebt);
static int index = 0;
public InitialDebt()
{
InitializeComponent();
}
private void btnSearch_Click(object sender, EventArgs e)
{
if (ddlFilter.Text == "SELECT")
{
MessageBox.Show("Please select a value from the drop down list");
}
else
{
try
{
string Filter = ddlFilter.Text;
string SearchStr = txtSearchStr.Text;
initDebt.CommandType = CommandType.StoredProcedure;
initDebt.CommandText = "mySPROC";
initDebt.Parameters.Add("@Filter", SqlDbType.VarChar).Value = Filter;
initDebt.Parameters.Add("@SearchStr", SqlDbType.VarChar).Value = SearchStr;
da.Fill(dt);
misc.Open();
txtSS.Text = dt.Rows[0]["SS_Num"].ToString();
txtLName.Text = dt.Rows[0]["last_Name"].ToString();
txtFName.Text = dt.Rows[0]["first_name"].ToString();
txtAgt.Text = dt.Rows[0]["agent_num"].ToString();
txtStore.Text = dt.Rows[0]["agent_name"].ToString();
}
catch (Exception ex)
{
MessageBox.Show("There are no records that match your search criteria. " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
misc.Close();
}
}
}
我试过了:
SQL
@Filter varchar(20),
@SearchStr varchar(40)
AS
BEGIN
SELECT SS_Num, upper(Last_Name) as Last_name, upper(First_Name) as first_name,
upper(Address) as address, upper(City) as city, upper(State) as state,
Zip_code, upper(Agency_code) as agency_code, Agent_num,
upper(Agent_name) as agent_name, debt_date, debt_amount
FROM myTable
WHERE
(
CASE
WHEN @Filter = 'SS #' THEN SS_Num
WHEN @Filter = 'LAST NAME' THEN Last_Name
WHEN @Filter = 'CITY' THEN City
WHEN @Filter = 'AGENT #' THEN Agent_num
WHEN @Filter = 'STORE' THEN Agent_Name
END
like '%'+@SearchStr+'%'
)
END
预先感谢您的任何建议。
在方法内创建您的命令和连接,并在完成后处理它们。 使用“使用”块会很好。
这也将解决您的“参数”问题,因为您将为每次新点击创建一个新的命令和连接对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.