【发布时间】:2013-10-31 21:16:21
【问题描述】:
我在 SQl Server 中有这个过程:
create procedure AutoSearchTeamByMobile
@Team_Mobile int
As
select * from Team_Info where Team_Mobile like @Team_Mobile+'%';
我在 C# 中有这段代码:
private void textBoxX4_TextChanged(object sender, EventArgs e)
{
int tMobile= int.Parse(textBoxX4.Text);
SqlCommand com = new SqlCommand("AutoSearchTeamByMobile", con);
com.Parameters.Add("@Team_Mobile", SqlDbType.Int).Value = tMobile;
com.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = com;
da.Fill(ds, "Team_Info");
dataGridViewX1.DataSource = ds.Tables["Team_Info"];
}
我有一个手机号码列表,它们保存在名为Team_Mobile的列中,数据类型为int,其中一个以'711......'开头,另一个以'700.. ....',所以现在当我在textBoxX4 中只写“7”时,所有数字(以 711 或 700 开头)都应该出现在dataGridViewX1 中,但是当我写“71”时,只有以数字开头的数字带有“711”的可能会出现在dataGridViewX1 中。当我写“70”时,只有以 700 开头的数字才会出现在dataGridViewX1 中。我没有得到我需要的东西,实际上我没有看到任何与我没有做任何事情相同的事情。
我的需要,当我写 71 时,Team_Mobile 列中所有有 711 的记录应该仍然出现,其他数字应该隐藏。
但是我用Team_Names 做的,它可以工作,因为Team_Names 的数据类型是nvarchar,但Team_Mobile 是int。
sql:
create procedure AutoSearchTeam
@Team_Name nvarchar (50)
As
select * from Team_Info where Team_Name like @Team_Name+'%';
C#:
private void textBoxX1_TextChanged(object sender, EventArgs e)
{
string t_name = textBoxX1.Text;
SqlCommand com = new SqlCommand("AutoSearchTeam", con);
com.Parameters.Add("@Team_Name", SqlDbType.NVarChar, 50).Value = t_name;
com.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = com;
da.Fill(ds, "Team_Info");
dataGridViewX1.DataSource = ds.Tables["Team_Info"];
}
我的问题是:有没有办法用整数替换%?
我可以用什么替换 % 以使用整数来获得我上面解释的内容?
对不起我的英语。
【问题讨论】:
-
好课。电话号码只是巧合的数字。由于您永远不会期望对它们进行数学运算,因此它们实际上是字符串,应该这样存储。
-
@Brad |非常感谢。
标签: c# stored-procedures datagridview textbox sql-server-2008-r2