黑马程序员技术交流社区

标题: 关于数据库的问题 [打印本页]

作者: guoguo    时间: 2013-11-26 18:48
标题: 关于数据库的问题
本帖最后由 guoguo 于 2013-11-26 19:18 编辑

请教一下各位高手:我在建立windows应用程序项目的时候,想把本地文件读入数据库,也建了一个基于服务的数据库,但是连上了数据库,但是,运行时弹出了插入数据成功对话框了,但是,一打开数据库,里面一条记录也没有,而且,用SqlDataReader  读取时,也显示没有记录,怎么回事呢?

      private void button1_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                  using(FileStream   filestream=File.OpenRead(openFileDialog1.FileName))
                  {
                      using (StreamReader reader = new StreamReader(filestream))
                      {
                          string s="";
                          while  ((s = reader.ReadLine()) != null)
                          {
                              string[] arr = s.Split('=');
                              string name = arr[0];
                              int score = Convert.ToInt32(arr[1]);
                              using (SqlConnection conn = new SqlConnection(@"Data Source=ZCH-PC\SQLEXPRESS;AttachDBFilename=|DataDirectory|\document.mdf;integrated Security=True;User Instance=True"))
                              {
                                  conn.Open();
                                  using (SqlCommand sql = conn.CreateCommand())
                                  {
                                      sql.CommandText = "insert into T_Person (name,score) values (@n,@s)";
                                      sql.Parameters.Add("n", name);
                                      sql.Parameters.Add("s", score);
                                      sql.ExecuteNonQuery();
                                  }
                              }
                          }
                          MessageBox.Show("数据插入成功");
                      }
                  }
            }
            
        }
作者: V_John    时间: 2013-11-26 18:57
sql.Parameters.Add("n", name);
sql.Parameters.Add("s", score);
这两句没有明白你要表达什么?
改成这样试试?
sql.Parameters.Add("@n", name);
sql.Parameters.Add("@s", score);
作者: guoguo    时间: 2013-11-26 19:19
之前折腾了半天,问题终于解决了,谢谢!
作者: u010209195    时间: 2013-11-26 19:36
V_John 发表于 2013-11-26 18:57
sql.Parameters.Add("n", name);
sql.Parameters.Add("s", score);
这两句没有明白你要表达什么?

版主,在10年入学自学视频(官网上面的)里面ADO.NET入门是sql.Parameters.Add(new SqlParameter("n",name))和现在的sql.Parameters.Add(new SqlParameter("@n",name))??这两个有什么区别??都可以运行成功的;还有sql.Parameters.Add("@n", name);这种方法现在也可以用,但是会提示"已过时",,三种用法有点小疑惑,不是很明白。。:(


作者: V_John    时间: 2013-11-26 20:02
u010209195 发表于 2013-11-26 19:36
版主,在10年入学自学视频(官网上面的)里面ADO.NET入门是sql.Parameters.Add(new SqlParameter("n",name) ...

我认为sql.Parameters.Add(new SqlParameter("n",name))和sql.Parameters.Add(new SqlParameter("@n",name))本质上没有什么区别,都可以,前者会提示“已过时”可能是以前用的人比较多,后来大家都用后者了,所以,这两种都可以,这是我个人理解,没有深入研究过。。。咳咳。。。




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