将数据库中的值调用到文本字段中-自定义错误
本文关键字:字段 自定义 文本 错误 数据库 值调用 | 更新日期: 2023-09-27 18:22:11
我的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>
好吧,从你所说的来看,几乎没有什么是错误的,连接似乎已经关闭:
- 您应该在需要时创建连接,完成后释放连接
- 邮政编码不是int类型
Convert.ToInt32
会给你意想不到的结果,因为零将被移除- 您还需要学习如何使用参数化查询,这将避免
- SQL注入,还可以避免语法错误
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;
}
}
}