将字符串从Textbox传递到SQL查询

时间:2015-01-24 20:32:11

标签: c# sql-server

背景

我编写了一个使用SQL查询检索数据的函数,然后将该数据输出到标签。目前,搜索字符串被硬编码为" 1002"。该函数在按钮单击事件上触发。

问题

如何从文本框将数据传递到我的SQL查询中,以便我的搜索字符串是文本框的内容,而不是1002?

代码

private void getInfoStationID()
{
    String ConnStr = "Data Source=SqlServer; Initial Catalog=Database; User ID=Username; Password=Password";
    String SQL = "SELECT stationname FROM dbo.Stations WHERE StationID = 1002";

    SqlDataAdapter Adpt = new SqlDataAdapter(SQL, ConnStr);
    DataSet question = new DataSet();
    Adpt.Fill(question);

    foreach (DataRow dr in question.Tables[0].Rows)
    {
        nameTtb.Text += question.Tables[0].Rows[0]["stationname"].ToString();
    }
}

3 个答案:

答案 0 :(得分:4)

将查询更改为:

string constring = @""; // Declare your connection string here.

String SQL = "SELECT stationname FROM dbo.Stations WHERE StationID = @StationId";
SqlConnection con = new SqlConnection(constring);
con.Open();
SqlCommand command = new SqlCommand(SQL ,con);

然后你必须像这样在命令对象中添加参数:

command .Parameters.Add("@StationId",SqlDbType.NVarChar).Value = textbox.Text;

现在您可能想知道为什么我在查询中使用了参数。这是为了避免SQL注入。

DataSet ds = new DataSet();
SqlDataAdapter adb = new SqlDataAdapter(command);
adb.Fill(ds);
con.Close();

现在你可以像这样迭代......

foreach (DataRow row in ds.Tables[0].Rows)
{

}

您必须初始化连接对象并在其中传递连接字符串。

答案 1 :(得分:0)

String ConnStr = "Data Source=SqlServer; Initial Catalog=Database; User ID=Username; Password=Password";
string SQL = "SELECT stationname FROM dbo.Stations WHERE StationID = @stationID";

SqlCommand command = new SqlCommand(SQL, ConnStr);

command.Parameters.Add(new SqlParameter("@stationID", SqlDbType.Int));
command.Parameters["@stationID"].Value = textbox.Text;

答案 2 :(得分:0)

您可以更改SQL字符串以使用变量(如@StationID),然后将变量添加到textbox.text的查询中

String SQL = "SELECT stationname FROM dbo.Stations WHERE StationID = @StationID";
SqlCommand cmd = new SqlCommand;
cmd.CommandText = SQL;
cmd.CommandType = CommandType.Text;
cmd.Connection = ConnStr;
cmd.Parameters.AddWithValue("@StationID", Textbox1.Text);
da = new SqlDataAdapter(cmd);
DataSet nds = new DataSet();
da.Fill(nds);