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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王玲星 中级黑马   /  2012-6-30 23:04  /  3277 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

OpenFileDialog ofd=new OpenFileDialog();  //打开文件选择
            if (ofd.ShowDialog() != System.Windows.Forms.DialogResult.OK)//如果选择的不是打开
            {
                return;//则返回,结束程序
            }
            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\File.mdf;Integrated Security=True;User Instance=True"))
            {
                conn.Open();//打开连接
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    //cmd.CommandText = "insert into T_person(Name,Age) values (@na,@ag)";
                    using (FileStream filestream = File.OpenRead(ofd.FileName))//读取文件
                    {
                        using (StreamReader streamReaser = new StreamReader(filestream))
                        {
                            string line = null;
                            while ((line = streamReaser.ReadLine()) != null)
                            {
                                string[] strs = line.Split(' ');
                                string name = strs[0];
                                int age = Convert.ToInt32(strs[1]);
                                //cmd.Parameters.Add(new SqlParameter("na", name));
                                //cmd.Parameters.Add(new SqlParameter("ag", age));
                                cmd.CommandText = "insert into T_person(Name,Age) values ('"+name+"',"+age+")";
                                MessageBox.Show(cmd.CommandText+","+("影响行数:"+cmd.ExecuteNonQuery()));
                                 //cmd.ExecuteNonQuery();
                                //cmd.Parameters.Clear();
                            }
                            MessageBox.Show("文件导入成功!");
                        }
                    }
                }
            }

请忽略文件导入,主要是怎么都加不到数据库中去,连影响行数都出来了,数据库中死活没有,手动添加没问题。
之前的写的是参数替代,可是发现它怎么都替代不了。。。我真心惆怅了~~~~

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

9 个回复

倒序浏览
你添加之后有没有刷新一下数据库啊,程序没有问题的啊,而且受影响行数都出来了。我怀疑你是不是没有刷新数据库才看不到数据的吧

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
while ((line = streamReaser.ReadLine()) != null)
                            {
                                string[] strs = line.Split(' ');
                                string name = strs[0];
                                int age = Convert.ToInt32(strs[1]);
                                //cmd.Parameters.Add(new SqlParameter("@na", name));
                                //cmd.Parameters.Add(new SqlParameter("@ag", age));
                                cmd.CommandText = "insert into T_person(Name,Age) values ('"+name+"',"+age+")";
                                MessageBox.Show(cmd.CommandText+","+("影响行数:"+cmd.ExecuteNonQuery()));

加@试试
                                 //cmd.ExecuteNonQuery();
                                //cmd.Parameters.Clear();

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
我也碰到过这个问题,是因为那段查找数据库文件的神奇代码位置写错了,写到program.cs文件中的Application.Run(new Form1())的后面去了,所以数据库文件里总是没有内容,但能返回影响的行数,你把神奇代码放在Application.Run的前面执行一下试试吧

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
xiaozehope 发表于 2012-6-30 23:17
你添加之后有没有刷新一下数据库啊,程序没有问题的啊,而且受影响行数都出来了。我怀疑你是不是没有刷新数 ...

我刷了好多次,而且还关了 重开过。。。我现在所有跟数据库有关的程序都出错。。烦死我了  :Q
回复 使用道具 举报
戴伟 发表于 2012-7-1 09:53
我也碰到过这个问题,是因为那段查找数据库文件的神奇代码位置写错了,写到program.cs文件中的Application. ...

尝试过。。依然没有,好惆怅啊~~~~~~~~~~~~
回复 使用道具 举报
你这个现象肯定可以归为找不到数据库文件的问题,所以你看看AttachDBFilename=|DataDirectory|\File.mdf这个路径有没有问题,然后你附加的数据库放那个文件夹了?有没有移动mdf文件?

评分

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

查看全部评分

回复 使用道具 举报
视频中说到的神奇代码,你有没有添加啊,代码如下:
string dataDir = AppDomain.CurrentDomain.BaseDirectory;
            if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release\"))
            {
                dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
                AppDomain.CurrentDomain.SetData("Datadirectory", dataDir);
            }

评分

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

查看全部评分

回复 使用道具 举报
感谢大家的热心帮助,问题已经解决了,是连接字符串写的有问题
新建个txt,把扩展名改成.udl,打开选择“SQL Server”点击下一步,再选择服务器名称,选数据库名称,测试连接,连接成功后,以文本方式打开,就可以的到正确的连接字符串了,简直太方便了。
回复 使用道具 举报
cmd.CommandText = "insert into T_person(Name,Age) values ('"+name+"',"+age+")";//向数据库内的T_person表增加一条记录,SQL语句没问题,若插入失败,SQL语句可能没有触发File数据库T_person表的,可能你的数据库不完整吧。

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马