如何查询SQL数据,然后根据结果插入或更新

时间:2013-08-06 17:50:37

标签: vb.net

我是初学者。但是,让我解释一下我需要做什么并向您展示我的代码

  1. 我有一个CSV文件。 在CSV内我有一个项目编号,城市,州,国家
  2. 我有一个具有相同列的SQL表
  3. 我想用vb.net来检查sql表中是否存在projectnumber 如果存在,那么我想运行更新语句。 如果它不存在那么我想运行插入语句。
  4. 我让程序正常运行。但我只是想知道这是否是正确的方法或我的代码是一些黑客的做法。

    LEGEND: DTTable是CSV内的数据表

    DT是具有SQL结果数据的数据表

    1. 首先,我将CSV中的所有行插入数据表

          Dim parser As New FileIO.TextFieldParser(sRemoteAccessFolder & "text.csv")
          parser.Delimiters = New String() {","}
          parser.ReadLine()
          Do Until parser.EndOfData = True
              DTTable.Rows.Add(parser.ReadFields())
          Loop
          parser.Close()
      
    2. 然后我使用oledbdataadapter来运行select查询并使用select语句的结果填充另一个数据表

                  SQLString = "select * from tblProjects where ProjectID='" & DTTable.Rows.Item(i).Item("ProjectNumber") & "'"
                  da = New OleDb.OleDbDataAdapter(SQLString, Conn)
                  da.Fill(dt)
      
    3. 然后我运行if语句

      If dt.Rows.Count = 0 then
          SQLString = "INSERT STATEMENT HERE"
          oCmd = New OleDb.OleDbCommand(SQLString, Conn)
          oCmd.ExecuteNonQuery()
      

      Else SQLString = "UPDATE STATEMENT HERE" oCmd = New OleDb.OleDbCommand(SQLString, Conn) oCmd.ExecuteNonQuery() End if

    4. 以上所有代码都在for循环中运行,以遍历CSV中的所有行

      对于i = 0到DTTable.Rows.Count - 1

    5. 你怎么看? 请指教

      谢谢

2 个答案:

答案 0 :(得分:0)

就个人而言,我不会使用.NET。我将表导入临时SQL Server表,然后编写我的查询以将临时表中的数据插入/更新到常规表。如果数据集很大,这肯定是您想要的方式。

如果这是一个需要经常重复的过程,您可以制作一个SSIS包。

答案 1 :(得分:0)

我使用datareader = command.ExecuteReader()运行选择查询。然后:

If datareader.Read() then
  'Update query using datareader(0) as a where predicate goes here
ElseIf datareader(0) = Nothing then
  'Insert query goes here
End If

我应该说,我也是一个相对新手,所以也许其他人可以建议一种更优雅的方式。