黑马程序员技术交流社区

标题: 【已解决】关于配置文件文件名的问题app.config为啥改了报错 [打印本页]

作者: 李玮    时间: 2012-6-7 16:14
标题: 【已解决】关于配置文件文件名的问题app.config为啥改了报错
本帖最后由 李玮 于 2012-6-18 10:56 编辑

我刚刚学到查询省市的那一课,在用配置文件储存 连接代码 时 改了名字 不叫app.config  叫apptt.config   为啥就报错啊  警告提示:未将对象引用设置到对象的实例。

然后,纠结了半天,看了半天视频 也没找到错误 最后 从新做了一次 把配置文件 命名为app.config 就正常运行了,然后改了名字还不行,难道是默认命名不用声明?   

这是为什么啊?   下面是 那个选择省市的代码!!!!


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;

namespace 省市查询
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {


            string peizhi = ConfigurationManager.ConnectionStrings["peizhi"].ConnectionString;


            using (SqlConnection conn = new SqlConnection(peizhi))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "select * from promary";
                    using(SqlDataReader reader = cmd.ExecuteReader() )
                    {
                        while (reader.Read())
                        {
                            shengss item = new shengss();
                            item.Name=reader.GetString(reader.GetOrdinal("proname"));
                            item.Id = reader.GetInt32 (reader.GetOrdinal("proID"));


                            cmbsheng.Items.Add(item);
                        }
                    }
                }

            }


        }

        private void cmbsheng_SelectedIndexChanged(object sender, EventArgs e)
        {
            cmbshi.Items.Clear();
            shengss item = (shengss)cmbsheng.SelectedItem;
            int idx = item.Id;
          //  string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
            string peizhi = ConfigurationManager.ConnectionStrings["peizhi"].ConnectionString;

            using (SqlConnection conn = new SqlConnection(peizhi))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {

                    cmd.CommandText = "select cityname from city where proid=@idx";

                    cmd.Parameters.Add(new SqlParameter("idx", idx));
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {

                        while (reader.Read())
                        {
                            string cityname = reader.GetString(reader.GetOrdinal("cityname"));

                            cmbshi.Items.Add(cityname);

                        }
                    }
                }
            }


        }

        private void cmbshi_SelectedIndexChanged(object sender, EventArgs e)
        {

        }






    }
    class shengss
    {
        string name;
        int id;

        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
    }

}



作者: G_Xiaotao    时间: 2012-6-7 16:52
呵呵 这也许就是文件格式的问题吧!!!
作者: 许全通    时间: 2012-6-7 17:05
你把文件.config格式都改了,当然会报错啊!就像你把一个html文件该称了txt文件,效果肯定不一样啊。
作者: 董超    时间: 2012-6-7 17:18
对于一个文件来说 . 后面的是这个文件的格式名!就相当于标示,你把一个文件的标示给改了 还让系统或者软件怎么识别
作者: 钟山山    时间: 2012-6-8 18:49
文件的格式被你改了,运行肯定会报错的。
作者: 高宜    时间: 2012-6-8 21:55
其实改为其它名字 ,即使后缀名不变也报错
例sql.config也报同样的错
作者: 钟广雄    时间: 2012-6-8 22:57
System.Configuration.ConfigurationManager.ConnectionStrings[KEY].ConnectionString;这个是读取APP.config配置文件里的节点 key 对应的字符串,你改了当然会报名了,改了就找不到了嘛,
作者: 高宜    时间: 2012-6-9 08:18
钟广雄 发表于 2012-6-8 22:57
System.Configuration.ConfigurationManager.ConnectionStrings[KEY].ConnectionString;这个是读取APP.conf ...

节点key对应的字符串具体在哪里定义了为app.config。如果有多个配置文件程序怎么区分了?
作者: 钟广雄    时间: 2012-6-9 08:24
高宜 发表于 2012-6-9 08:18
节点key对应的字符串具体在哪里定义了为app.config。如果有多个配置文件程序怎么区分了? ...

<configuration>
    <connectionStrings>
        <add name="KEY" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
    </connectionStrings>
是根据 KEY 获取connectionString的字符串  

作者: 刘豪    时间: 2012-6-9 09:18
后缀名改错了肯定会报错啊,明明他叫张三,你叫他李四,他会应你吗!显然不会吧,就这么个理。
作者: 高宜    时间: 2012-6-9 12:06
钟广雄 发表于 2012-6-9 08:24
是根据 KEY 获取connectionString的字符串

我的意思是程序怎么知道要调用app.config这个文件?
作者: 戴伟    时间: 2012-6-9 13:05
App.Config是程序的默认配置文件,程序查找配置直接查找这个文件,所以改文件名字是肯定不行的,而且这个配置文件是只读的,如果要修改,需要像修改xml文档一样去修改这个文档。
作者: 李玮    时间: 2012-6-9 17:26
G_Xiaotao 发表于 2012-6-7 16:52
呵呵 这也许就是文件格式的问题吧!!!

帖子我打错了是app.config  改为 apptt.config  打错了打了个 apptt.net
还是那问题
晕~~~
作者: 李玮    时间: 2012-6-9 17:27
许全通 发表于 2012-6-7 17:05
你把文件.config格式都改了,当然会报错啊!就像你把一个html文件该称了txt文件,效果肯定不一样啊。 ...

帖子我打错了是app.config  改为 apptt.config  打错了打了个 apptt.net
还是那问题
晕~~~:L
作者: 李玮    时间: 2012-6-9 17:27
董超 发表于 2012-6-7 17:18
对于一个文件来说 . 后面的是这个文件的格式名!就相当于标示,你把一个文件的标示给改了 还让系统或者软件 ...

帖子我打错了是app.config  改为 apptt.config  打错了打了个 apptt.net
还是那问题
晕~~~
作者: 李玮    时间: 2012-6-9 17:27
钟山山 发表于 2012-6-8 18:49
文件的格式被你改了,运行肯定会报错的。

帖子我打错了是app.config  改为 apptt.config  打错了打了个 apptt.net
还是那问题
晕~~~
作者: 李玮    时间: 2012-6-9 17:27
高宜 发表于 2012-6-8 21:55
其实改为其它名字 ,即使后缀名不变也报错
例sql.config也报同样的错

帖子我打错了是app.config  改为 apptt.config  打错了打了个 apptt.net
还是那问题
晕~~~


就是你说的问题
为啥啊
作者: 高宜    时间: 2012-6-10 11:15
就是不知道才问啊!静候高手解答
作者: 李玮    时间: 2012-6-11 15:32
高宜 发表于 2012-6-10 11:15
就是不知道才问啊!静候高手解答

你可以看看13楼的,虽然我看不懂
作者: 李玮    时间: 2012-6-11 15:33
高宜 发表于 2012-6-10 11:15
就是不知道才问啊!静候高手解答

你可以看看13楼的,虽然我看不懂
作者: 李玮    时间: 2012-6-11 15:36
戴伟 发表于 2012-6-9 13:05
App.Config是程序的默认配置文件,程序查找配置直接查找这个文件,所以改文件名字是肯定不行的,而且这个配 ...

能说的再详细一点吗  我是新手 不太懂?
作者: 武剑峰    时间: 2012-6-11 16:38
App.Config这个文件不允许随便更改名字,就和发布网站一样你的目录里面必须要有index.jsp或index.asp或default.jsp或default.asp一样,系统会自动查找这些,你如果要改的话系统找不到就会报错。除非你能找到系统文件并修改,或者自己写个发布工具,期待高手出现
作者: 李玮    时间: 2012-6-13 12:00
武剑峰 发表于 2012-6-11 16:38
App.Config这个文件不允许随便更改名字,就和发布网站一样你的目录里面必须要有index.jsp或index.asp或defa ...

:D谢了,受教了
作者: 平建    时间: 2012-6-13 13:03
App.Config,这个是微软封装好的!!就好像微软要找小明,而你却把他改成张三了,所以微软就不认识了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2