【问题标题】:Regex match, insert string data to SQL database正则表达式匹配,将字符串数据插入 SQL 数据库
【发布时间】:2015-03-24 02:23:47
【问题描述】:

我想将正则表达式匹配中的数据/字符串插入到我的 SQL 数据库中的表中。

这是我使用的代码示例。

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Threading.Tasks;
using HtmlAgilityPack;
using System.Data;
using System.Net;
using System.Text.RegularExpressions;

namespace AutoApp_Win32Server
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("1,0\n\n");
            Console.WriteLine("1,0");

            HtmlWeb web = new HtmlWeb();
            HtmlDocument doc1 = web.Load("http://brandstofprijzen.info/?postcode=&plaats=8801&afstand=25&brandstof=Diesel&zoeken=Zoeken");

            HtmlNodeCollection tables = doc1.DocumentNode.SelectNodes("/html/body/center/table");
            HtmlNodeCollection rows = tables[13].SelectNodes(".//tr");

            string makeSpace = " ";

            for (int i = 1; i < rows.Count; ++i)
            {
                HtmlNodeCollection cols = rows[i].SelectNodes(".//td");

                string nawhtml = cols[0].InnerHtml;
                string brandstof = cols[1].InnerText;
                string prijs = cols[2].InnerText;
                string datum = cols[3].InnerText;

                Regex match1 = new Regex(@"<b>\s*(.+?)\s*</b><br>");
                Match naamtankstation = match1.Match(nawhtml);
                Console.WriteLine("Naam         : " + naamtankstation.Groups[1].Value);



                Regex match2 = new Regex(@"</b><br>\s*(.+?)\s*<br>");
                Match straattankstation = match2.Match(nawhtml);
                Console.WriteLine("Straat       : " + straattankstation.Groups[1].Value);

                Regex match3 = new Regex(@"[^\(]*<br>\s*(.+?)\s*<br>");
                Match postcodetankstation = match3.Match(nawhtml);
                Console.WriteLine("Postcode     : " + postcodetankstation.Groups[1].Value);

                //Console.WriteLine("naw          : " + nawhtml);


                Console.WriteLine("Brandstof    : " + brandstof);
                Console.WriteLine("Prijs        : " + prijs);
                Console.WriteLine("Datum        : " + datum);
                Console.WriteLine(makeSpace);

                Console.WriteLine(makeSpace);
            }

            Console.ReadKey();

        }
    }
}

数据库代码:

using System.Data.SqlClient;

var conn = new SqlDbConnection();
conn.ConnectionString = 
              "Data Source=ServerName;" + 
              "Initial Catalog=DataBaseName;" + 
              "User id=UserName;" + 
              "Password=Secret;"; 
conn.Open();

谁能给我一个例子,我如何将 Console.Writeline 字符串发送到 SQL 表。

【问题讨论】:

    标签: c# sql sql-server regex string


    【解决方案1】:

    这样的事情应该可以解决问题

    using(SqlConnection connection = new SqlConnection("Data Source=ServerName;" + 
              "Initial Catalog=DataBaseName;" + 
              "User id=UserName;" + 
              "Password=Secret;"))
    {
        connection.Open();
        string sql =  "INSERT INTO Address(Naam,Straat,Postcode) VALUES(@param1,@param2,@param3)";
            SqlCommand cmd = new SqlCommand(sql,connection);
            cmd.Parameters.Add("@param1", SqlDbType.Varchar, 50).value = naamtankstation.Groups[1].Value; 
            cmd.Parameters.Add("@param2", SqlDbType.Varchar, 50).value = straattankstation.Groups[1].Value;
            cmd.Parameters.Add("@param3", SqlDbType.Varchar, 50).value = postcodetankstation.Groups[1].Value;
            cmd.CommandType = CommandType.Text;
            cmd.ExecuteNonQuery();
    }
    

    【讨论】:

    • 这种方法可行。只需使用 varchar max 而不是固定长度。
    猜你喜欢
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 2010-09-14
    • 2012-06-05
    • 2013-12-25
    相关资源
    最近更新 更多