내 데이터 집합에서 단 5 문자 인 기본 키에 선행 0을 추가하려고합니다. 기본 키는 6 자이며 앞에 오는 0은받는 Excel 파일에서 잘립니다. 아래의 명령문에서 앞의 0을 추가하고 싶지만 "CONVERT"기능을 인식 할 수 없습니다. 나는 아직도 새롭고 사용할 비슷한 기능을 모른다. 귀하의 도움을 크게 주시면 감사하겠습니다. DataGridView에 나를 그 여분의 제로가 발생 확인하기 위해 데이터 테이블 속에있는 것을 볼 수 있습니다OLEDB 명령문에서 앞에 0을 추가하십시오.
Dim sqlCon As New SqlConnection("Server=MyServer;Database=MyDatabase;User Id=xxx;Password=xxxxxx")
sqlCon.Open()
Dim excelCmd2 As New System.Data.OleDb.OleDbCommand("SELECT (SELECT RIGHT('000000'+CONVERT(VARCHAR,[Primary #]),6)) AS [Primary #],[Gourmet #],[Unit] FROM [" + sheetName + "]", con)
Dim excelRead As New System.Data.OleDb.OleDbDataAdapter()
Dim dt2 As New DataTable()
excelRead.SelectCommand = excelCmd2
excelRead.MissingSchemaAction = MissingSchemaAction.AddWithKey
excelRead.Fill(dt2)
DataGridView1.AutoGenerateColumns = True
DataGridView1.DataSource = dt2
DataGridView1.Refresh()
아래
("SELECT (SELECT RIGHT('000000'+CONVERT(VARCHAR,[Primary #]),6)) AS [Primary #],[Gourmet #],[Unit],FROM [" + sheetName + "]", con)
전체 코드입니다.
Using dataRead As System.Data.OleDb.OleDbDataReader = excelCmd2.ExecuteReader()
If dataRead.HasRows() Then
While dataRead.Read()
Dim sqlCmd As New SqlCommand
sqlCmd.Connection = sqlCon
sqlCmd.CommandType = CommandType.Text
sqlCmd.CommandText = sqlUpdate
sqlCmd.Parameters.Add("@primary", SqlDbType.VarChar).Value = Convert.ToString(dataRead.Item("Primary #"))
sqlCmd.Parameters.Add("@spc", SqlDbType.VarChar).Value = Convert.ToString(dataRead.Item("Gourmet #"))
sqlCmd.Parameters.Add("@unit", SqlDbType.VarChar).Value = Convert.ToString(dataRead.Item("Unit"))
sqlCmd.ExecuteScalar()
End While
End If
End Using
데이터베이스의 '[Primary #]'열의 유형은 무엇입니까? 데이터베이스 프로그램이란 무엇입니까? 기본 키는 실제로 6 자 여야합니까? –
[기본 #]이 Excel 파일에서 나오고 파일에 따라 텍스트 또는 숫자 형식입니다 (보낸 사람이 일치하지 않습니다). varchar (6)로 SQL 데이터베이스에 업로드합니다. – Infinite8Self
나는 값을 그대로 읽고,'Cstr (primaryId) .PadLeft (6, "0"c)'를 사용하여 값을 데이터베이스에 삽입하기 전에 문자열로 변환하는 것이 좋습니다. DataGridView가 필요합니까? - 그렇지 않다면, 그것은 단지 복잡한 일입니다. –