我怎么能设置一个CommandText到我的搜索按钮
本文关键字:CommandText 我的 搜索 按钮 一个 设置 怎么能 | 更新日期: 2023-09-27 18:08:36
我试图做一个搜索按钮,当我输入一个ID到文本框并按下它,它会到我的私人SQL服务器数据库,并获得指向该ID的数据行,但是异常处理程序给我带来了错误,因为我错误的CommandText ..这是我的代码
private void SearchBtn_Click(object sender, EventArgs e)
{
cn.ConnectionString = Properties.Settings.Default.ConStr;
if (ID.Text == "")
{
MessageBox.Show("Please Enter The ID you would like to search");
}
else
{
SqlCommand com = new SqlCommand();
cn.Open();
SqlParameter user = new SqlParameter("@ID", SqlDbType.Int);
SqlParameter FN = new SqlParameter("@First_Name",SqlDbType.NChar);
SqlParameter LN = new SqlParameter("@Last_Name", SqlDbType.VarChar);
SqlParameter Jb = new SqlParameter("@Job", SqlDbType.VarChar);
SqlParameter Ag = new SqlParameter("@Age", SqlDbType.VarChar);
SqlParameter ph = new SqlParameter("@Phone", SqlDbType.VarChar);
com.Parameters.Add(user);
com.Parameters.Add(FN);
com.Parameters.Add(LN);
com.Parameters.Add(Jb);
com.Parameters.Add(Ag);
com.Parameters.Add(ph);
com.Connection = cn;
我的错误如下: * com。CommandText = "搜索(First_Name、Last_Name、工作、年龄、电话)("+ FN值 + "','" + LN + "','" + 简森-巴顿 + "','" + Ag) + "','" + 从MyList ph值+")";*
user.Direction = ParameterDirection.Input;
FN.Direction = ParameterDirection.Output;
LN.Direction = ParameterDirection.Output;
Jb.Direction = ParameterDirection.Output;
Ag.Direction = ParameterDirection.Output;
ph.Direction = ParameterDirection.Output;
FN.Size = 10;
LN.Size = 10;
Jb.Size = 10;
Ag.Size = 10;
ph.Size = 10;
user.Value = Convert.ToInt32(ID.Text);
try
{
com.ExecuteNonQuery();
FirstName.Text = FN.Value.ToString();
LastName.Text = LN.Value.ToString();
Job.Text = Jb.Value.ToString();
Age.Text = Ag.Value.ToString();
Phone.Text = ph.Value.ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cn.Close();
}
我正在使用Visual Studio 2012。
"Search (First_Name,Last_Name,Job,Age,Phone) values('" + FN + "','" + LN + "','" + Jb+ "','" + Ag + "','" + ph + "' from MyList)"
看起来并不像SQL。我也不太确定你为什么要设置一大堆你不使用的参数。
也许你的意思是
com.CommandText = "SELECT First_Name, Last_Name, Job, Age, Phone FROM MyList WHERE ID=@Id";
com.Parameters.AddWithValue("@Id", ID.Text);
此外,如果这是你的意图,那么ExecuteNonQuery
是错误的,因为这是INSERT
, UPDATE
和其他不返回结果的东西。
命令文本应该像
com.CommandText = "SELECT First_Name, Last_Name, Job, Age, Phone FROM MyList WHERE ....";
删除大部分参数,只留下输入参数。
使用:SqlDataReader reader = command.ExecuteReader();
代替com.ExecuteNonQuery()
并使用它读取数据。示例文章在这里
first:
"Search (First_Name,Last_Name,Job,Age,Phone) values('" + FN + "','" + LN + "','" + Jb+ "','" + Ag + "','" + ph + "' from MyList)"
对我来说不像是有效的SQL。
我认为你想做这样的事情:
using (SqlConnection myConnection = new SqlConnection(connString))
{
string oString = " SELECT * from MyList WHERE (id = @id)";
SqlCommand oCmd = new SqlCommand(oString, myConnection);
oCmd.Parameters.Add(new SqlParameter("@id", ID.Text));
myConnection.Open();
string name="";
string lastname ="";
using (SqlDataReader oReader = oCmd.ExecuteReader())
{
while (oReader.Read())
{
name = oReader["name"].ToString(); // replace "name" with the name of the column you want
lastname = oReader["lastname"].ToString();
}
}
myConnection.Close();
return name + lastname;
您可以使用这些值来设置表单上的文本框中的文本:
YourNameTextbox.Text = name;
. .等