A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李玮 于 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; }
        }
    }

}


评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

23 个回复

倒序浏览
呵呵 这也许就是文件格式的问题吧!!!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
你把文件.config格式都改了,当然会报错啊!就像你把一个html文件该称了txt文件,效果肯定不一样啊。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
对于一个文件来说 . 后面的是这个文件的格式名!就相当于标示,你把一个文件的标示给改了 还让系统或者软件怎么识别

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
文件的格式被你改了,运行肯定会报错的。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
其实改为其它名字 ,即使后缀名不变也报错
例sql.config也报同样的错

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
System.Configuration.ConfigurationManager.ConnectionStrings[KEY].ConnectionString;这个是读取APP.config配置文件里的节点 key 对应的字符串,你改了当然会报名了,改了就找不到了嘛,

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
钟广雄 发表于 2012-6-8 22:57
System.Configuration.ConfigurationManager.ConnectionStrings[KEY].ConnectionString;这个是读取APP.conf ...

节点key对应的字符串具体在哪里定义了为app.config。如果有多个配置文件程序怎么区分了?
回复 使用道具 举报
高宜 发表于 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的字符串  
回复 使用道具 举报
后缀名改错了肯定会报错啊,明明他叫张三,你叫他李四,他会应你吗!显然不会吧,就这么个理。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
钟广雄 发表于 2012-6-9 08:24
是根据 KEY 获取connectionString的字符串

我的意思是程序怎么知道要调用app.config这个文件?
回复 使用道具 举报
App.Config是程序的默认配置文件,程序查找配置直接查找这个文件,所以改文件名字是肯定不行的,而且这个配置文件是只读的,如果要修改,需要像修改xml文档一样去修改这个文档。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
G_Xiaotao 发表于 2012-6-7 16:52
呵呵 这也许就是文件格式的问题吧!!!

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

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

帖子我打错了是app.config  改为 apptt.config  打错了打了个 apptt.net
还是那问题
晕~~~
回复 使用道具 举报
钟山山 发表于 2012-6-8 18:49
文件的格式被你改了,运行肯定会报错的。

帖子我打错了是app.config  改为 apptt.config  打错了打了个 apptt.net
还是那问题
晕~~~
回复 使用道具 举报
高宜 发表于 2012-6-8 21:55
其实改为其它名字 ,即使后缀名不变也报错
例sql.config也报同样的错

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


就是你说的问题
为啥啊
回复 使用道具 举报
就是不知道才问啊!静候高手解答
回复 使用道具 举报
高宜 发表于 2012-6-10 11:15
就是不知道才问啊!静候高手解答

你可以看看13楼的,虽然我看不懂
回复 使用道具 举报
高宜 发表于 2012-6-10 11:15
就是不知道才问啊!静候高手解答

你可以看看13楼的,虽然我看不懂
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马