Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > อยากรู้เรื่องการเปรียบเทียบสตริงกัน ข้อมูลในฐานข้อมูลค่ะ



 

อยากรู้เรื่องการเปรียบเทียบสตริงกัน ข้อมูลในฐานข้อมูลค่ะ

 



Topic : 044114



โพสกระทู้ ( 45 )
บทความ ( 0 )



สถานะออฟไลน์
Hi5



ตัวอย่างนะค่ะ
a b c d
124567964 124564 1246 63
145674973 456793 7896 75
124597895 124567 1265 59 ข้อมูลพวกนี้จะอยูใน textbox ที่เปิดจากไฟล์.txt

แ]tในฐานข้อมูลที่เรียกมาจะมีคอลัม a b c คือจะเอาสตริง a b cไปเปรียบเทียบกับข้อมูลจากฐานข้อมูลที่ดึงมาตอนนี้ถ้าเกิดข้อมูลตรงกันให้บันทึกข้อมูลที่คอลัม dลงไปในฐานข้อมูลที่คอลัม a b c ตรงกันอ่ะค่ะ


ตอนนี้แยกสตริงได้แล้วค่ะแต่งงว่าจะเอาไปเทียบยังไงแล้วจะวนลูปเพื่อไปแยกสตริงบันทัดต่อไปยังไง ช่วยตอบทีนะค่ะ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-06-16 17:48:25 By : kikunwa View : 1634 Reply : 6
 

 

No. 1



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


textfile.txt
a b c d
124567964 124564 1246 63
145674973 456793 7896 75
124597895 124567 1265 59

on load event
DataTable Dt = ReadFile(Server.MapPath("~/textfile.txt"));
Save(Dt);

method
    protected DataTable ReadFile(string filePath)
    {
        DataTable Dt = new DataTable();
        StreamReader Re = File.OpenText(filePath);
        string input = null;
        bool firstLine = true;

        while ((input = Re.ReadLine()) != null)
        {
            if (firstLine)
            {
                foreach (string colName in input.Split(' '))
                    Dt.Columns.Add(new DataColumn(colName, typeof(string)));
            }
            else
            {
                string[] data = input.Split(' ');

                DataRow Dr = Dt.NewRow();
                for (int i = 0; i < data.Length; i++)
                    Dr[i] = data[i];
                Dt.Rows.Add(Dr);
            }

            firstLine = false;
        }

        Re.Close();

        return Dt;
    }

    protected void Save(DataTable dataSource)
    {
        string sqlConnectionString = "your connection string";
        SqlConnection sqlConnection = new SqlConnection(sqlConnectionString);

        foreach (DataRow Dr in dataSource.Rows)
        {
            int id = Compare(Dr["a"].ToString(), Dr["b"].ToString(), Dr["C"].ToString());

            if (id != 0)
            {
                string sqlCommandString = "Update [YourTable] Set [ColumnD]=@colD Where [ID]=@ID";
                SqlCommand sqlCommand = new SqlCommand(sqlCommandString, sqlConnection);
                sqlCommand.Parameters.AddWithValue("@colD", Dr["d"].ToString());
                sqlCommand.Parameters.AddWithValue("@ID", id);

                try
                {
                    sqlConnection.Open();
                    sqlCommand.ExecuteNonQuery();
                    sqlConnection.Close();
                }
                catch { }
            }
        }
    }

    protected int Compare(string colA, string colB, string colC)
    {
        int idMatch = 0;

        string sqlConnectionString = "your connection string";
        SqlConnection sqlConnection = new SqlConnection(sqlConnectionString);

        string sqlCommandString = "Select [ID] From [YourTable] Where [ColumnA]=@colA And [ColumnB]=@colB And [ColumnC]=@colC";
        SqlCommand sqlCommand = new SqlCommand(sqlCommandString, sqlConnection);
        sqlCommand.Parameters.AddWithValue("@colA", colA);
        sqlCommand.Parameters.AddWithValue("@colB", colB);
        sqlCommand.Parameters.AddWithValue("@colC", colC);

        try
        {
            sqlConnection.Open();
            SqlDataReader reader = sqlCommand.ExecuteReader(CommandBehavior.SingleRow);
            if (reader.Read())
                idMatch = int.Parse(reader["ID"].ToString());
            else
                idMatch = 0;
            reader.Close();
            sqlConnection.Close();
        }
        catch { }

        return idMatch;
    }







Date : 2010-06-16 20:08:13 By : tungman
 


 

No. 2



โพสกระทู้ ( 45 )
บทความ ( 0 )



สถานะออฟไลน์
Hi5

ขอคุณค่ะ คุณtungman เดียวลองเอาโค๊ดไปใส่ก่อนนะค่ะ
Date : 2010-06-16 21:45:26 By : kikunwa
 

 

No. 3



โพสกระทู้ ( 45 )
บทความ ( 0 )



สถานะออฟไลน์
Hi5

อันนี้เป็นcode c#ป่าวอ่ะค่ะ คือว่านู๋ใช้วีบีเขียนอ่ะค่ะ ไม่เคยเรียนc#

เลยงงๆ อ่ะค่ะ พวกการเชื่อต่อฐานข้อมูลพอเข้าใจค่ะ พอแปลงได้ใช้ access

แต่ฟังก์ชั่นprotectedอันนี้ไข้ใจ จิงๆค่ะ
Date : 2010-06-16 23:50:30 By : kikunwa
 


 

No. 4



โพสกระทู้ ( 45 )
บทความ ( 0 )



สถานะออฟไลน์
Hi5

แต่ยังไงก็ต้องขอขอบคุณ คุณ tungmanมากๆนะค่ะ
Date : 2010-06-16 23:52:08 By : kikunwa
 


 

No. 5



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


cute-header-03

Code (VB.NET)
#Region "Engine"
Public Class ReadData
    Public Shared Function ReadDataFromFile(ByVal e As ReadDataArgs) As Integer
        Dim iRet As Integer

        If (Not System.IO.File.Exists(e.TextFileName)) Then
            Return -1
        End If

        Using myReader As System.IO.StreamReader = New System.IO.StreamReader(e.TextFileName)

            Dim myAccessDatabase As MsAccessDataUtils = New MsAccessDataUtils(e.DataBaseFileName, e.UserName, e.Password)

            'send to database
            Dim CommandStrBuilder As System.Text.StringBuilder = New System.Text.StringBuilder()

            CommandStrBuilder.AppendLine("UPDATE [{0}] SET [{1}]=@ValueData ")
            CommandStrBuilder.AppendLine("WHERE ([{2}]=@fieldAValue) ")
            CommandStrBuilder.AppendLine("   AND ([{3}]=@fieldBValue) AND ([{4}]=@fieldCValue)")

            Dim cmdStr As String = CommandStrBuilder.ToString()
            cmdStr = String.Format(cmdStr, e.TableName _
                                    , e.ValueColumnName, e.ColumnAName, e.ColumnBName, e.ColumnCName)

            Dim myLine As String = String.Empty
            iRet = 0
            Do
                myLine = myReader.ReadLine()

                'Split incoming string with space charactor 
                Dim FragmentStr() As String = myLine.Split(New [Char]() {" "c}, StringSplitOptions.RemoveEmptyEntries)

                'prepare data fro sendinto command
                Dim ColumnValue() As String = New String() {String.Empty, String.Empty, String.Empty, String.Empty}

                'trap some error here
                Try
                    For i As Integer = 0 To 3
                        ColumnValue(i) = FragmentStr(i)
                    Next
                Catch ex As Exception
                End Try

                Dim myCommandParams As System.Collections.Hashtable = New System.Collections.Hashtable()
                myCommandParams.Add("@ValueData", ColumnValue(3))
                myCommandParams.Add("@fieldAValue", ColumnValue(0))
                myCommandParams.Add("@fieldBValue", ColumnValue(1))
                myCommandParams.Add("@fieldCValue", ColumnValue(2))

                myAccessDatabase.ExecuteMsAccessSQLCommand(cmdStr, myCommandParams)

                iRet += 1
            Loop While (myLine Is Nothing)

        End Using

        Return iRet

    End Function
End Class
#End Region

#Region "Supplement Class"
Public Class ReadDataArgs
    Public TextFileName As String = String.Empty
    Public DataBaseFileName As String = String.Empty
    Public UserName As String = String.Empty
    Public Password As String = String.Empty
    Public TableName As String = String.Empty
    Public ColumnAName As String = String.Empty
    Public ColumnBName As String = String.Empty
    Public ColumnCName As String = String.Empty
    Public ValueColumnName As String = String.Empty

    Public Sub New()
    End Sub

    Public Sub New(ByVal argTextFileName As String, ByVal argDataBaseFileName As String _
        , ByVal argUserName As String, ByVal argPassword As String _
        , ByVal argTableName As String _
        , ByVal argColumnAName As String, ByVal argColumnBName As String, ByVal argColumnCName As String _
        , ByVal argValueColumnName As String)

        TextFileName = argTextFileName
        DataBaseFileName = argDataBaseFileName
        UserName = argUserName
        Password = argPassword
        TableName = argTableName
        ColumnAName = argColumnAName
        ColumnBName = argColumnBName
        ColumnCName = argColumnCName
        ValueColumnName = argValueColumnName

    End Sub

End Class
Public Class MsAccessDataUtils

    Private Const constConnectionStringFrame = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};"
    Private Const constConnectionStringFrameWithUserNameAndPassword = constConnectionStringFrame & "User Id={1};Password={2};"
    Private Const constMsAccessCommandParameterPrefix As String = "@"

    Private _DataBaseFile As String = String.Empty
    Private _HasUserName As Boolean = False
    Private _UserName As String = String.Empty
    Private _Password As String = String.Empty

    Public Property DataBaseFile()
        Get
            Return _DataBaseFile
        End Get
        Set(ByVal value)
            _DataBaseFile = value
            If ((_UserName.Length = 0) And (_Password.Length = 0)) Then
                _HasUserName = False
            Else
                _HasUserName = True
            End If
        End Set
    End Property
    Public Property UserName() As String
        Get
            Return _UserName
        End Get
        Set(ByVal value As String)
            _UserName = value
            If ((_UserName.Length = 0) And (_Password.Length = 0)) Then
                _HasUserName = False
            Else
                _HasUserName = True
            End If

        End Set
    End Property
    Public Property Password()
        Get
            Return _Password
        End Get
        Set(ByVal value)
            _Password = value
            If ((_UserName.Length = 0) And (_Password.Length = 0)) Then
                _HasUserName = False
            Else
                _HasUserName = True
            End If
        End Set
    End Property
    Public Property HasUserNameAndPassword()
        Get
            Return _HasUserName
        End Get
        Set(ByVal value)
            _HasUserName = value
        End Set
    End Property

    Public Sub New()
    End Sub

    Public Sub New(ByVal argDatabaseName As String)
        Me.DataBaseFile = argDatabaseName
    End Sub

    Public Sub New(ByVal argDatabaseName As String, ByVal argUserName As String, ByVal argPassword As String)
        Me.DataBaseFile = argDatabaseName
        Me.UserName = argUserName
        Me.Password = argPassword
    End Sub

    Public Shared ConnectionString As String = String.Empty

    Private Function ConnectionStringBuilder() As String
        Dim retStr As String = String.Empty

        If (Me.HasUserNameAndPassword) Then
            retStr = String.Format(constConnectionStringFrameWithUserNameAndPassword _
                                   , Me.DataBaseFile, Me.UserName, Me.Password)
        Else
            retStr = String.Format(constConnectionStringFrame _
                                   , Me.DataBaseFile)
        End If
        Return retStr
    End Function

    Public Sub ExecuteMsAccessSQLCommand(ByVal argCommandText As String, ByVal Params As System.Collections.Hashtable)
        Using myConnection As System.Data.OleDb.OleDbConnection _
            = New System.Data.OleDb.OleDbConnection(Me.ConnectionStringBuilder())

            Dim myCommand As System.Data.OleDb.OleDbCommand _
                = New System.Data.OleDb.OleDbCommand(argCommandText, myConnection)

            myCommand.CommandType = CommandType.Text

            If (Not (Params Is Nothing)) And (Params.Count > 0) Then

                For Each keyStr As String In Params.Keys
                    Dim tempKey As String = keyStr
                    If (Not keyStr.Substring(0, 1).Equals(constMsAccessCommandParameterPrefix)) Then
                        tempKey = constMsAccessCommandParameterPrefix & tempKey
                    End If
                    myCommand.Parameters.AddWithValue(tempKey, Params(keyStr))
                Next

            End If

            Try
                myConnection.Open()
                myCommand.ExecuteNonQuery()
            Catch ex As Exception
                Throw New Exception(ex.Message)
            Finally
                If Not (myConnection Is Nothing) Then
                    myConnection.Close()
                End If
            End Try

        End Using
    End Sub
End Class
#End Region


เวลาใช้งาน (ได้ทั้ง win app และ web app ค่ะ)
ก้อประมาณนี้ค่ะ
Code (VB.NET)
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles MyBase.Load
    

        Dim myReadDataArgs As ReadDataArgs = New ReadDataArgs()

        With myReadDataArgs
            
             'ชื่อและตำแหน่งของ text file
            .TextFileName = "C:\SAMPLE.TXT"
 
            'ชื่อและตำแหน่งของ ฐานข้อมูล access
            .DataBaseFileName = "C:\DB.ACCDB" 
            'ชื่อ ตารางที่ใช้เก็บข้อมูล
            .TableName = "SAMPLENAME" '
            'ชื่อ column A B C D จากโจทย์  ทั้งหมดก็ปรับตามการใช้งานของคุณค่ะ
            .ColumnAName = "A"
            .ColumnBName = "B"
            .ColumnCName = "C"
            .ValueColumnName = "D"

        End With
        
        ReadData.ReadDataFromFile(myReadDataArgs )


    End Sub




ปล.มันดึกแล้ว code เลยยังไม่ได้ทดสอบอะไรมากนะคะ ^^'
Date : 2010-06-17 01:57:13 By : blurEyes
 


 

No. 6



โพสกระทู้ ( 45 )
บทความ ( 0 )



สถานะออฟไลน์
Hi5

ขอบคุณมากๆค่ะ นอนดึกกันจังเลย อิอิ
Date : 2010-06-17 12:52:18 By : kikunwa
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : อยากรู้เรื่องการเปรียบเทียบสตริงกัน ข้อมูลในฐานข้อมูลค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่