如何在C#中将数据插入MS Sql数据库 [英] How to Insert Data into MS Sql database in C#

查看:84
本文介绍了如何在C#中将数据插入MS Sql数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有c#字符串看起来像这样:

字符串名称是finaloutput

i have c# String look like this:
String name is finaloutput

"IP,C1,PktUp,PktDown,Upstream,Downstream,C2,C3,C4,C5\r\n192.168.1.56,0,77776,98364,9203233,96637437,0,0,0,0\r\n192.168.1.12,0,80718,105922,11845169,94299988,0,0,0,0"



i希望将字符串数据插入sql数据库表

这是我的列标题


i want to insert String data to sql database table
this is my column header

IP,C1,PktUp,PktDown,Upstream,Downstream,C2,C3,C4,C5



这是我的数据行


this is my data row

192.168.1.56,0,77776,98364,9203233,96637437,0,0,0,0
192.168.1.12,0,80718,105922,11845169,94299988,0,0,0,0



我的表名是用法

我的表列名称是


my table name is usage
my table column name is

IP C1 PktUp PktDown Upstream Downstream C2 C3 C4 C5



如何插入数据到我的桌子。

i试试这段代码,但插入第一行o nly。




how to insert data to my table.
i try this code but insert first row only.

private void button1_Click(object sender, EventArgs e)
{
    string finaloutput = "IP,C1,PktUp,PktDown,Upstream,Downstream,C2,C3,C4,C5\r\n192.168.1.56,0,77776,98364,9203233,96637437,0,0,0,0\r\n192.168.1.12,0,80718,105922,11845169,94299988,0,0,0,0";

    string[] fields = finaloutput.Split(',');
    using (SqlConnection con = new SqlConnection(@"Data Source='localhost';Initial Catalog='NetUsage';User ID='sa';Password='tstc123'"))
    {

        con.Open();
        SqlCommand cmd = new SqlCommand("INSERT INTO usage(IP, Upstream, Downstream) VALUES (@IP, @Upstream, @Downstream)", con);
        cmd.Parameters.AddWithValue("@IP", fields[0].ToString());
        cmd.Parameters.AddWithValue("@Upstream", fields[4].ToString());
        cmd.Parameters.AddWithValue("@Downstream", fields[5].ToString());
        cmd.ExecuteNonQuery();
    }
}



看起来像这样


look like this

IP  Upstream  Downstream                                         
--- --------- -----------
IP  Upstream   Downstream 



i想要这个


i want to this

IP            Upstream   Downstream                                         
---           ---------  -----------
192.168.1.56  9203233    96637437 
192.168.1.12  11845169   94299988 



Plz帮助我,我不熟悉c#

推荐答案

你必须在拆分之前拆分线每列值。

这样:

You have to split the lines before splitting each column value.
This way:
string finaloutput = "IP,C1,PktUp,PktDown,Upstream,Downstream,C2,C3,C4,C5\r\n192.168.1.56,0,77776,98364,9203233,96637437,0,0,0,0\r\n192.168.1.12,0,80718,105922,11845169,94299988,0,0,0,0";

string[] lines = finaloutput.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

string line;
string[] fields;

using (SqlConnection con = new SqlConnection(@"Data Source='localhost';Initial Catalog='NetUsage';User ID='sa';Password='tstc123'")) {

   con.Open();

   using (SqlCommand cmd = new SqlCommand("INSERT INTO usage(IP, Upstream, Downstream) VALUES (@IP, @Upstream, @Downstream)", con)) {

      cmd.Parameters.Add("@IP");
      cmd.Parameters.Add("@Upstream");
      cmd.Parameters.Add("@Downstream");

      // We start at index 1 as the first row (index 0) seems to hold column headers
      for (int i = 1; i < lines.Length; i++) {
         line = lines[i];
         fields = line.Split(',');
         cmd.Parameters["@IP"].Value = fields[0];
         cmd.Parameters["@Upstream"].Value = fields[4];
         cmd.Parameters["@Downstream"].Value = fields[5];
         cmd.ExecuteNonQuery();
      }
   }
}





删除不必要的ToString()调用[/ Edit ]



Removed unnecessary ToString() invocations [/Edit]


private void button2_Click(object sender, EventArgs e)
{
    string finaloutput = "IP,C1,PktUp,PktDown,Upstream,Downstream,C2,C3,C4,C5\r\n192.168.1.56,0,77776,98364,9203233,96637437,0,0,0,0\r\n192.168.1.12,0,80718,105922,11845169,94299988,0,0,0,0";
    string[] lines = finaloutput.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

    string line;
    string[] fields;

    using (SqlConnection con = new SqlConnection(@"Data Source='localhost';Initial Catalog='NetUsage';User ID='sa';Password='tstc123'"))
    {

        con.Open();

        using (SqlCommand cmd = new SqlCommand("INSERT INTO csv (IP, Upstream, Downstream) VALUES (@IP, @Upstream, @Downstream)", con))
        {

            //cmd.Parameters.Add("@IP");
            //cmd.Parameters.Add("@Upstream");
            //cmd.Parameters.Add("@Downstream");
            cmd.Parameters.Add("@IP", SqlDbType.VarChar);
            cmd.Parameters.Add("@Upstream", SqlDbType.Float);
            cmd.Parameters.Add("@Downstream", SqlDbType.Float);


            // We start at index 1 as the first row (index 0) seems to hold column headers
            for (int i = 1; i < lines.Length; i++)
            {
                line = lines[i];
                fields = line.Split(',');
                cmd.Parameters["@IP"].Value = fields[0];
                cmd.Parameters["@Upstream"].Value = fields[4];
                cmd.Parameters["@Downstream"].Value = fields[5];
                cmd.ExecuteNonQuery();

            }
            MessageBox.Show("Successfull!");
        }
    }
}


您需要分两个阶段拆分输入。首先拆分\\\\ n,然后在每一行拆分,。按照以下方法修改您的代码。



You need to split the input in two phases. First split over "\r\n" and then on each row split over ",". Modify your code as per below approach.

string[] rows = finaloutput.Split(new string[] { "\r\n" }, StringSplitOptions.None);

foreach(string srow in rows)
{
string[] fields = srow.Split(',');
    using (SqlConnection con = new SqlConnection(@"Data Source='localhost';Initial Catalog='NetUsage';User ID='sa';Password='tstc123'"))
    {
 
        con.Open();
        SqlCommand cmd = new SqlCommand("INSERT INTO usage(IP, Upstream, Downstream) VALUES (@IP, @Upstream, @Downstream)", con);
        cmd.Parameters.AddWithValue("@IP", fields[0].ToString());
        cmd.Parameters.AddWithValue("@Upstream", fields[4].ToString());
        cmd.Parameters.AddWithValue("@Downstream", fields[5].ToString());
        cmd.ExecuteNonQuery();
    }
}


这篇关于如何在C#中将数据插入MS Sql数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆