c#导入数据sql执行成功但是数据库里就是没有生成数据,数据是从txt读出来的,@sno,@sname能取到值,数据库操作返回了1,我的操作是在visual studio 2008里进行的。
 while ((line = reader.ReadLine())!= null)
  {
                                string[] str = line.Split(',');
                                string sno = str[0];
                                string sname = str[1];
                              
                                command.Parameters.Clear(); //每次插入都要clear参数
                                command.Parameters.Add(new SqlParameter("sno", sno));
                                command.Parameters.Add(new SqlParameter("sname", sname));
                                command.ExecuteNonQuery();
                            
    }如有需要我可以贴出全部代码

解决方案 »

  1.   

    数据库不打开直接就执行T-SQL语句了?还是command.commandtext=?
      

  2.   

    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.IO;
    using System.Data.SqlClient;namespace 文件的导入
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void nybutton_Click(object sender, EventArgs e)
            {
                if(myimport.ShowDialog()!=DialogResult.OK){
                    return;
                }
                //使用FileStream读取文件
                using (FileStream fileStream = File.OpenRead(myimport.FileName))
                {
                    string path = AppDomain.CurrentDomain.BaseDirectory;                  using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\school.mdf;Integrated Security=True;User Instance=True")) 
                      {   
                      
                       
                      
                        using (StreamReader reader = new StreamReader(fileStream))
                        {                        conn.Open();
                            //向数据库插入数据  
                            using (SqlCommand command = conn.CreateCommand())
                            {
                                command.CommandText = "insert into t_student(sno,sname) values(@Sno,@Sname)";
                                string line = null;
                                while ((line = reader.ReadLine())!= null)
                                {
                                    string[] str = line.Split(',');
                                  
                                  
                                    command.Parameters.Clear(); //每次插入都要清楚参数
                                    command.Parameters.Add(new SqlParameter("Sno", str[0]));
                                    command.Parameters.Add(new SqlParameter("Sname", str[1]));
                                    //int tem=command.ExecuteNonQuery();
                                    if (command.ExecuteNonQuery() > 0)
                                    {
                                        MessageBox.Show("1条数据保存成功");
                                    }
                                    //MessageBox.Show(command.ExecuteNonQuery().ToString());
                                }
                               // conn.Dispose();
                              
                            }                      
                        }
                      }
                }
                
               // MessageBox.Show("数据保存成功");
               
            }
        }
    }
      

  3.   

    using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\school.mdf;Integrated Security=True;User Instance=True")) ;
    conn.Open();加上这句。
      

  4.   

    完整的代码已经贴出来了,我不知道是win7和sqlserver不兼容还是怎么的只是不能插入。我尝试过先insert再select这样子可以查到数据 ,可是怎么弄数据库里就是没数据。郁闷的是执行update操作或者delete操作数据库
    是OK了,就是insert不OK。要说是不兼容的话会这样吗。晕死了。
      

  5.   

    跟兼容没有关系,如果确实open了Connection,并且能正常连接,并且没有报错,那么数据时插入进去了的,但你能确定你看的和你插入的是同一个数据库吗?
      

  6.   

    请将如下两行中的参数名写完整,即@Sno与@Sname:
    command.Parameters.Add(new SqlParameter("Sno", str[0]));
    command.Parameters.Add(new SqlParameter("Sname", str[1]));
      

  7.   

    我按你说的试过了。还是不好使,command.ExecuteNonQuery() 也返回了1。还是没数据,有可能的话我把你们帮我跑下程序,我照着教程上做的。一个字都不差教程上可以我的不行。差别就在操作系统上,因此我有点怀疑。
      

  8.   

      command.Parameters.Add(new SqlParameter("@Sno", str[0]));
      command.Parameters.Add(new SqlParameter("@Sname", str[1]));
    少了@
      

  9.   

    额,请问lz你是从那里判断出代码执行成功了呢??难道仅仅是运行没有报错??请确认他是真正按你的想法执行了,而非你认为他执行了。ps:调试和调试手段是合格程序员必须过的一关。如果是我们,我们不会简单就和人说“执行成功”这句话,我们会去先下断点运行看他是否真的执行到那个地方了,同时我们也会用“sql的事件探查器”去“看”那东西是否真的就像你认为的那样运行了
      

  10.   

    搞了半天,原来是连接字符串的问题。我把数据存到别的地方了。以后建议大家写连接字符串的时候注意一下。特别是在visual studio里添加的那种数据库。
      

  11.   

    我还特地问你了:“跟兼容没有关系,如果确实open了Connection,并且能正常连接,并且没有报错,那么数据时插入进去了的,但你能确定你看的和你插入的是同一个数据库吗?”
    你还信誓旦旦地回答:“这里就一个数据库文件啊,我不可能连了其他的啊。”我真的服了你了。