사용자가 CSV 파일을 DataGrid로 가져 와서 해당 행을 Oracle의 테이블로 업데이트 할 수 있도록하는 VB.Net 응용 프로그램이 있습니다.Vb.Net 및 CSV 파일
여기까지 왔지만 작동하지 않는 것은 오류를 발생시키지 않습니다.
Private Sub Update_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Update.Click
MsgBox("Saving...")
Dim table As New DataTable()
Dim BindingSource As New BindingSource()
BindingSource.DataSource = table
table.Columns.Add("ORDER_NO")
table.Columns.Add("LINE_ITEM_NO")
table.Columns.Add("CONTRACT")
table.Columns.Add("PART_NO")
table.Columns.Add("QTY_REQUIRED")
table.Columns.Add("QTY_PER_ASSEMBLY")
table.Columns.Add("RELEASE_NO")
table.Columns.Add("SEQUENCE_NO")
table.Columns.Add("ORDER_CODE")
table.Columns.Add("PART_OWNERSHIP")
Dim parser As New FileIO.TextFieldParser("C:\Documents and Settings\User\Desktop\solution.csv")
parser.Delimiters = New String() {","} ' fields are separated by comma
parser.HasFieldsEnclosedInQuotes = True
parser.TrimWhiteSpace = True
parser.ReadLine()
Dim sConnectionString As String = "Data
Source=MYSERVER.COM;User ID=MYNAME;Password=MYPASSWD;"
Dim strSql As String = "INSERT INTO SHOP_MATERIAL_ALLOC_TAB(ORDER_NO,
LINE_ITEM_NO, CONTRACT, PART_NO, QTY_REQUIRED, QTY_PER_ASSEMBLY,
RELEASE_NO,SEQUENCE_NO,ORDER_CODE,PART_OWNERSHIP) VALUES (@ORDER_NO,
@LINE_ITEM_NO,@CONTRACT,@PART_NO,@QTY_REQUIRED,@QTY_PER_ASSEMBLY,@RELEASE_NO,@SEQUENCE_NO,@ORDER_CODE,@PART_OWNERSHIP)"
Using conn As New OracleClient.OracleConnection(sConnectionString)
Dim adapter As New OracleDataAdapter
Dim cmd As New OracleClient.OracleCommand()
cmd.Connection = conn
cmd.Connection.Open()
cmd.CommandText = strSql
adapter.InsertCommand = New OracleCommand(strSql, conn)
adapter.UpdateCommand = cmd
adapter.Update(table)
'--cmd.ExecuteReader()
cmd.Connection.Close()
MsgBox("Saved! Kindly check your Shop order!")
DataGridView1.DataSource = Nothing
End Using
End Sub
는 이제 테이블에서 레코드를 삽입에 그것을 아래로 가져왔다,하지만 문제는 단지 행의 첫 번째 열을 구문 분석이다. 그래서 모두 테이블의 6 열이 CSV의 첫 번째 필드 값으로 업데이트된다고 가정합니다. 내가 바보 야하는 경우
MsgBox("Saving...")
Dim parser As New FileIO.TextFieldParser("C:\Documents and Settings\nUser\Desktop\solution.csv")
parser.Delimiters = New String() {","} ' fields are separated by comma
parser.HasFieldsEnclosedInQuotes = True
parser.TrimWhiteSpace = True
Dim i As Integer
For i = 0 To DataGridView1.RowCount - 1
Dim CurrentField = parser.ReadFields()
'--parser.ReadLine()
Dim sConnectionString As String = "Data Source=MYSERVER.COM;User ID=MYUSER;Password=MYPASSWD;"
Dim strSql As String = "INSERT INTO SHOP_MATERIAL_ALLOCT(ORDER_NO, LINE_ITEM_NO, CONTRACT, PART_NO, QTY_REQUIRED, QTY_PER_ASSEMBLY) VALUES (:ORDER_NO, :LINE_ITEM_NO,:CONTRACT,:PART_NO,:QTY_REQUIRED,:QTY_PER_ASSEMBLY)"
Using conn As New OracleClient.OracleConnection(sConnectionString)
Using cmd As New OracleClient.OracleCommand()
Dim adapter As New OracleDataAdapter
conn.Open()
cmd.Connection = conn
cmd.CommandText = strSql
cmd.Parameters.AddWithValue("ORDER_NO", CurrentField(i))
cmd.Parameters.AddWithValue("LINE_ITEM_NO", CurrentField(i))
cmd.Parameters.AddWithValue("CONTRACT", CurrentField(i))
cmd.Parameters.AddWithValue("PART_NO", CurrentField(i))
cmd.Parameters.AddWithValue("QTY_REQUIRED", CurrentField(i))
cmd.Parameters.AddWithValue("QTY_PER_ASSEMBLY", CurrentField(i))
cmd.CommandText = strSql
adapter.InsertCommand = New OracleCommand(strSql, conn)
adapter.UpdateCommand = cmd
'adapter.Update(table)
cmd.ExecuteNonQuery()
cmd.Connection.Close()
DataGridView1.DataSource = Nothing
End Using
End Using
Next
내 실수를 지적 해 주셔서 감사합니다. 스티브. 나는 똑같이 고쳤지만 경고 메시지를 준다. 더 이상 쓸모없고 더 이상 쓸모없는 것을 추가하고 AddWithValue를 대신 사용하라는 제안을한다. - cmd.Parameters.AddWithValue ("ORDER_NO", parser [0]) "Identifier expected"오류가 발생하고 인덱스 값이 제공되는 위치를 가리 킵니다. 이것에 대한 많은 문서가 아니라, 나를 안내 해주십시오. – user1305070
죄송합니다. 본인의 예에서 실수를했습니다. 'cmd.Parameters.Add ("ORDER_NO", OracleType.VarChar) .Value = parser [0];'AddWithValue에 대해서는 말할 수 없습니다. 당신이 작성한대로 작동해야합니다. 이전 방법을 시도하십시오 (수정 됨) – Steve
이것은 [MSDN 링크] (http://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracleparametercollection.addwithvalue (v = vs.100) .aspx)입니다.)를 Microsoft의 OracleClient에 대한 문서에 추가하십시오. – Steve