You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#连接SQL Server遇'configuration'元素未声明错误求助

解决配置文件错误及实现C#连接SQL Server并筛选日期数据

一、修复App.config配置文件错误

你遇到的"The 'configuration' element is not declared"错误由多个配置问题导致,修复后的完整配置文件如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
  </startup>

  <connectionStrings>
    <add name="cn" 
         connectionString="Data Source=LKW15480\SQLEXPRESS;
         Initial Catalog=DB1;
         User ID=Administrator;
         Password=你的管理员密码;"
         ProviderName="System.Data.SqlClient"/> 
  </connectionStrings>
</configuration>

错误点说明:

  • 标签拼写错误:<connectionString>需改为复数形式<connectionStrings>
  • 关键字拼写错误:DataSource改为Data Source(中间含空格),ProvideName改为ProviderName
  • 大小写错误:System.Data.sqlClient修正为System.Data.SqlClient
  • 冗余字符:移除<supportedRuntime>标签末尾多余的反引号(`)
  • 补充必填项:SQL Server认证模式下需添加Password字段;若用Windows认证,可替换User ID和Password为Integrated Security=True;

二、C#代码实现数据库连接与日期范围筛选

以下是完整的可运行示例代码,实现从指定表中筛选两个日期区间内的数据:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

class Program
{
    static void Main()
    {
        // 从配置文件读取连接字符串
        string connectionString = ConfigurationManager.ConnectionStrings["cn"].ConnectionString;
        
        // 定义筛选的起始、结束日期
        DateTime startDate = new DateTime(2024, 1, 1);
        DateTime endDate = new DateTime(2024, 6, 30);
        
        // using语句自动释放数据库资源
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                
                // 参数化查询避免SQL注入
                string query = @"SELECT * FROM 你的表名 
                                 WHERE 日期列名 BETWEEN @StartDate AND @EndDate";
                
                using (SqlCommand command = new SqlCommand(query, connection))
                {
                    // 添加查询参数
                    command.Parameters.AddWithValue("@StartDate", startDate);
                    command.Parameters.AddWithValue("@EndDate", endDate);
                    
                    // 执行查询并读取结果
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            // 示例:输出每行的ID和日期字段,需替换为实际列名
                            Console.WriteLine($"ID: {reader[0]}, 日期: {reader["日期列名"]}");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"操作出错: {ex.Message}");
            }
        }
    }
}

注意事项:

  • 替换代码中的你的表名和日期列名为实际数据库表名和日期字段名
  • 参数化查询是必须的,可彻底避免SQL注入风险
  • using语句确保连接、命令等资源被自动释放,避免内存泄漏

内容的提问来源于stack exchange,提问作者sumith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 03:30:46