c#导入数据sql执行成功但是数据库里就是没有生成数据

时间:2022-11-17 13:49:33
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();
                            
    }

如有需要我可以贴出全部代码

16 个解决方案

#1


command.commandtxt=??

#2


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

#3


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("数据保存成功");
           
        }
    }
}

#4


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

#5


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

#6


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

#7


这里就一个数据库文件啊,我不可能连了其他的啊。

#8


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

#9


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

#10


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

#11


老大啊,我加上了但是执行后数据库里还是没数据。

#12


str[0],str[1]有值?查一下看

#13


额,请问lz你是从那里判断出代码执行成功了呢??

难道仅仅是运行没有报错??

请确认他是真正按你的想法执行了,而非你认为他执行了。

ps:调试和调试手段是合格程序员必须过的一关。如果是我们,我们不会简单就和人说“执行成功”这句话,我们会去先下断点运行看他是否真的执行到那个地方了,同时我们也会用“sql的事件探查器”去“看”那东西是否真的就像你认为的那样运行了

#14


你说的这个东西用了下,好像什么用也没有。

#15


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

#16


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

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

我真的服了你了。

#1


command.commandtxt=??

#2


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

#3


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("数据保存成功");
           
        }
    }
}

#4


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

#5


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

#6


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

#7


这里就一个数据库文件啊,我不可能连了其他的啊。

#8


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

#9


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

#10


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

#11


老大啊,我加上了但是执行后数据库里还是没数据。

#12


str[0],str[1]有值?查一下看

#13


额,请问lz你是从那里判断出代码执行成功了呢??

难道仅仅是运行没有报错??

请确认他是真正按你的想法执行了,而非你认为他执行了。

ps:调试和调试手段是合格程序员必须过的一关。如果是我们,我们不会简单就和人说“执行成功”这句话,我们会去先下断点运行看他是否真的执行到那个地方了,同时我们也会用“sql的事件探查器”去“看”那东西是否真的就像你认为的那样运行了

#14


你说的这个东西用了下,好像什么用也没有。

#15


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

#16


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

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

我真的服了你了。