我正在尝试编写一个非常简单的程序,该程序可以从我的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中将结果州和城市输出到其各自的标签。
答案 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