我的代码如下
   
 int intColCount = 0;
            bool blnFlag = true;
            DataTable mydt = new DataTable("myTableName");            DataColumn mydc;
            DataRow mydr;            string strpath = "\\\\192.22.42.176\\ptu\\08102000.CSV";
            string strline;
            string[] aryline;            System.IO.StreamReader mysr = new System.IO.StreamReader(strpath);            while ((strline = mysr.ReadLine()) != null)
            {
                aryline = strline.Split(new char[] { ',' });                if (blnFlag)
                {
                    blnFlag = false;
                    intColCount = aryline.Length;
                    for (int i = 0; i < aryline.Length; i++)
                    {
                        mydc = new DataColumn(aryline[i]);
                        mydt.Columns.Add(mydc);
                    }
                }                mydr = mydt.NewRow();
                for (int i = 0; i < intColCount; i++)
                {
                    mydr[i] = aryline[i];
                }
                mydt.Rows.Add(mydr);
            }
            dataGridView1.DataSource = mydt;这样datatable已经填好数据了,那要怎么样导入到sql server里面呢,sql sever里面没有建表,是否还需要建表呢???

解决方案 »

  1.   

    1、现在SQL Server里建表。
    2、利用循环将DataTable里的每一行insert到数据库中对应的表中。
      

  2.   

    DataTable对象
    DataTable 是 ADO.NET 库中的核心对象,就像普通的数据库中的表一样,它也有行和列。它主要包括DataRow和DataColumn,分别代表行和列。
    (1) 数据行(DataRow)
    数据行是给定数据表中的一行数据,或者说是数据表中的一条记录。它可能代表一个学生、一位用户、一张订单或者一件货物的相关数据。DataRow对象的方法提供了对表中数据的插入、删除、更新和查看等功能。提取数据表中的行的语句如下:
    DataRow dr = dt.Rows[n];
    其中:DataRow代表数据行类;dr是数据行对象;dt代表数据表对象; n代表行的序号(序号从0开始)。
    (2) 数据列(DataColumn)
    数据表中的数据列(又称字段)定义了表的数据结构,例如,可以用它确定列中的数据类型和大小,还可以对其他属性进行设置。例如,确定列中的数据是否是只读的、是否是主键、是否允许空值等;还可以让列在一个初始值的基础上自动增殖,增值的步长还可以自行定义。
     某列的值需要在数据行的基础上进行。语句如下:
    string dc = dr.Columns["字段名"].ToString();
      或者 
    string dc = dr.Column[i].ToString();//i表示对应的列索引
     综合前面的语句,若想取出数据表(dt)中第3条记录中的“姓名”字段,并将该字段的值放入一输入框(textBox1)中时,语句可以写成:
    DataRow dRow = dt.Rows[2 ];   // 从数据表提取行 
    string textBox1.Text=dRow["CompanyName"].ToString();  // 从行中取出字段的值
      

  3.   

    asp.net夜话之七:ADO.NET介绍
    ADO.NET是对Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。以前做数据库访问的时候,需要一直与数据库保持连接,直到获取完所有满足需要的数据之后才会断开数据库连接,这种数据库访问方式称之为连接式数据访问技术。相比于以前的连接式数据访问技术,ADO.NET除了提供连接式数据访问技术之外,还提供了另一种断开式解决方案,那就是在内存中模拟一个数据库,也就是内存中的数据库。我们知道在实际的数据库技术中,每个数据库就是一个业务逻辑单元,一般来说这个数据库包含了实现一个应用软件或者一个网站所需要的全部数据。
      

  4.   

    当然 sql要建立个表
    如果要把DataTable数据全部填入sql的话 你的数据库建立的表的字段要和DataTable一样
    然后 循环innsert到sql
      

  5.   

    foreach(datarow row in mydt.rows)
    {
    insertinto 表名(字段名···)values(dr.row["字段名"]);
    }
    没再VS环境下写,希望对楼主有帮助!
      

  6.   

      SqlConnection con = new SqlConnection();
    con.ConnectionString = "server=.;uid=sa;pwd=密码;database=数据库";
    con.ConnectionString = constringtext;
     return con;
    这是连接sql的数据库代码 SqlConnection con = Command.getConn();
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "insert into 表名(字段1,字段2,字段……) values "
                                            + "(@字段1,@字段2,@字段……)";
      cmd.Parameters.Add("@字段1", SqlDbType.NVarChar);
      cmd.Parameters["@字段1"].Value = 值;  cmd.Parameters.Add("@字段2", SqlDbType.NVarChar);
      cmd.Parameters["@字段2"].Value = 值;  cmd.Connection = con;
     con.Open();
    cmd.ExecuteNonQuery();
     con.Close();
      

  7.   

    由于这个表很大,有很多很多列,这样循环插入会非常麻烦,表已经存在内存中了,不能直接插入到sqlserver么?
      

  8.   

    能直接帮一个表就那样的INSERT到SQL里么?没用过哦,不过你应该和楼上说的那样先去建个表,然后在操作语句去INSERT什么的
      

  9.   

    遍历datatable的行将其中列数据取出再insert倒sql的表中,不知道行不行
      

  10.   


     SqlConnection con = new SqlConnection(); 
    con.ConnectionString = "server=.;uid=sa;pwd=密码;database=数据库"; 
    con.ConnectionString = constringtext; 
    return con; 
    //这是连接sql的数据库代码 SqlConnection con = Command.getConn(); 
            SqlCommand cmd = new SqlCommand(); 
            cmd.CommandText = "insert into 表名(字段1,字段2,字段……) values " 
                                            + "(@字段1,@字段2,@字段……)"; 
      cmd.Parameters.Add("@字段1", SqlDbType.NVarChar); 
      cmd.Parameters["@字段1"].Value = 值;   cmd.Parameters.Add("@字段2", SqlDbType.NVarChar); 
      cmd.Parameters["@字段2"].Value = 值;   cmd.Connection = con; 
    con.Open(); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 循环写入就行了。
      

  11.   

    需要先在数据库中新增一张表,构造如下格式的SQL文本,字段数量与DataTable列数一致:
    if exists (select * from sysobjects where id = object_id(N'[dbo].[TableName]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[TableName]CREATE TABLE [dbo].[TableName] (
    [Column1] [varchar] (80) ,
    [Column2] [varchar] (80) ,
    [Column3] [varchar] (80) ,
    [Column4] [varchar] (80) ,
    [Column5] [varchar] (80) 
    ) ON [PRIMARY]用SqlCommand的ExecuteNonQuery执行上述脚本即可然后为每一行构造插入语句:
    insert into TableName values('值', '值', '值', '值', '值')同样用SqlCommand的ExecuteNonQuery执行即可