我的 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 注入(inject),还可以避免语法错误。
SELECT *
+.GetValue()
是一些错误的接收方,如果你曾经 修改表结构或查询你可以破坏你的代码,而不是列索引使用名称,并且不要使用通配符*
选择特定字段。- 最后但同样重要的是,使用
using 语句
它更 处置元素的有效方式。
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;
}
}
}
关于c# - 将数据库中的值调用到文本字段中 - 自定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25881565/