我的page_load函数中有以下代码,它基本上根据用户输入的邮政编码从数据库返回一个值。问题是,我遇到了自定义错误问题。当我的其他两个文本字段自动填充时,如果我等待5分钟然后提交,我将收到错误,但是,如果我在5分钟内提交,一切都按预期工作。如果我从数据库中调用值的方式是错误的,或者我如何修复此错误,请你告诉我?这是错误:
<!-- Web.Config Configuration File -->
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
这是我的代码,(这是非常基本的,我是编程新手):
protected void Page_Load(object sender, EventArgs e)
{
if (txtzip.Text.Length == 5)
{
SqlCommand Comm1 = new SqlCommand("SELECT TOP(1) * FROM zip_code WHERE zip = '" + Convert.ToInt32(txtzip.Text) + "'", conn);
conn.Open();
SqlDataReader DR1 = Comm1.ExecuteReader();
if (DR1.Read())
{
txtstate.Text = DR1.GetValue(2).ToString();
txtcity.Text = DR1.GetValue(1).ToString();
}
conn.Close();
}
这是我的配置文件(请注意我用......替换了我的凭据):
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="aConn" connectionString="Data Source=.......;Initial Catalog=aspData;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=......"/>
<add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=......."/>
<add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=........"/>
</assemblies>
</compilation>
<httpRuntime targetFramework="4.5"/>
</system.web>
</configuration>
答案 0 :(得分:4)
好吧,很少有问题,从你说的话来看,连接似乎已经关闭了:
Convert.ToInt32
会因为领先而给你意想不到的结果
零将被删除。SELECT *
+ .GetValue()
是一些错误的补充,如果你曾经的话
修改表结构或查询可以破坏代码,而不是列索引使用名称,不要使用通配符*
选择特定字段。using statement
它更多
处理物品的有效方法。using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand(
"SELECT TOP(1) city, state FROM zip_code WHERE zip = @zip", connection))
{
command.Parameters.Add(new SqlParameter("zip", txtzip.Text));
SqlDataReader reader = command.ExecuteReader();
if(reader.HasRows())
{
var city = reader["city"].ToString();
var state = reader["state"].ToString();
Console.WriteLine("City = {0}, State = {1}",
city,
state)
txtstate.Text = city
txtcity.Text = state;
}
}
}