c# - 将数据库中的值调用到文本字段中 - 自定义错误

标签 c# asp.net .net

我的 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/

相关文章:

c# - 适用于 Windows x64 上大文件的良好 ISAM 库或其他简单文件管理器

c# - 如何将标签值作为参数传入 javascript 函数?

.net - 在 Serilogs Elasticsearch Sink 中使用 IndexDecider

asp.net - 创建新项目时如何更改 dotnet new 模板的名称?

c# - 锁定sql表中的记录

c# - 有一次当我按F5时,我得到了WCF测试客户端

c# - 使用最小起订量模拟通用存储库

c# - 如何检查游戏对象是否具有特定属性?

c# - ASP :GridView not getting info from SqlDataAdapter with Stored Procedure

asp.net - 在 IIS 应用程序中禁用 roslyn