如何验证文本框中的邮政编码,并将相应的州/市输出到其各自的标签

时间:2019-04-15 06:06:23

标签: c# sql sql-server winforms

我正在尝试编写一个非常简单的程序,该程序可以从我的SQL Server数据库中提取数据。并根据在文本框中输入的有效邮政编码,分别在相应的标签中输出正确的州和城市。

这是我正在弄乱的一些代码。我只是尝试一下,显然不起作用。

我能够用与zip /城市相关的所有状态填充组合框,仅此而已。

// Connection string.
String cnStr;
SqlConnection cn = new SqlConnection();

cnStr = "Data Source=000.00.000.00;Initial Catalog= ;User ID= ;Password= ";

// Assign Connection string to the connection object
cn.ConnectionString = cnStr;

// Open the connection to the SQL Server
cn.Open();

// This statement creates the command object and passes in the SQL statement
// then associates the command to the cn connection object
SqlCommand cmd = new SqlCommand("select distinct state, city from tblZipcodes order by state", cn);

// Open a DataReader
SqlDataReader rdrZip = cmd.ExecuteReader();

cn.Close();

验证文本框中输入的邮政编码,并从SQL Server中将结果州和城市输出到其各自的标签。

1 个答案:

答案 0 :(得分:2)

始终使用参数,永远不要构建没有参数的sql查询,因为它会使您的应用程序对sql injection保持开放状态。
您应该使用这样的where子句

var sql = "select distinct state, city from tblZipcodes where zipcode = @ZipCode";

using (SqlCommand cmd = new SqlCommand(sql))
{
    cmd.CommandType = CommandType.Text;
    cmd.Parameters.Add(new SqlParameter("@ZipCode", SqlDbType.VarChar) { Value = myZipCode.Text });

    SqlDataReader rdrZip = cmd.ExecuteReader();
}

如果您的列类型为SqlDbType.NVarChar而不是NVarChar,请使用VarChar