EDITED! :SQL 데이터베이스에 datagridveiw 데이터 삽입. "쿼리를 구문 분석하는 동안 오류가 발생했습니다."
Excel 용 파일을 DataGridview에로드하는 기능을 가진 프로그램을 작성하고 있습니다. Excel 파일에는 열이 10 개인 제품 목록이 포함되어 있습니다. 지금은 잘 작동합니다. 파일이 잘로드되었습니다. 그러나이로드가 끝나면 프로그램은 SQL Server CE 데이터베이스를 datagridview의 데이터로 채 웁니다. 따라서 다음에이 양식을 열면 datagridview가 데이터베이스의 데이터로 채워 져야합니다. (이 기능은 회사에서 변경된 제품 목록을 업데이트하는 기능입니다.)
이 데이터를 데이터베이스에 삽입하는 데 문제가 있습니다.
나는 오류가 있습니다.
There was an error parsing the query. [Token line number = 1, Token line offset = 67, Token in error = Taq]
DNA가 Excel 파일 (1 행 3 열 ("ITEM")의 셀에서 단어를 셀의 전체 내용은 AB-AB-0192/A의 Taq입니다 DNA polymerase (licensed) : 문제는 TAQ 이전의 공간과 어떻게 든 연결되어 있다고 생각합니다. 나는 이것을 테스트했습니다. 공간을 삭제하면 Taq에서 DNA로 문제 정보가 바뀝니다. 어떻게 이것을 피할 수 있습니까? 텍스트로 설정하고, SQL 서버 CE 데이터베이스 열 유형 nvarchar
이다 있습니다.
편집!
확인 사람은 당신이 옳은 길에 저를 넣어 :)
이 작동 :
string strQuery = @"INSERT INTO TabelaProdukty VALUES (@VD, @ItemCode, @Item, @Qty, @Ppcur, @StandardPrice, @CeMarked, @Description, @Description2, @Edma)";
sqlconnection.Open();
using (System.Data.SqlServerCe.SqlCeCommand comm = new System.Data.SqlServerCe.SqlCeCommand(strQuery, sqlconnection))
{
comm.Parameters.Add("@VD", SqlDbType.NVarChar);
comm.Parameters.Add("@ItemCode", SqlDbType.NVarChar);
comm.Parameters.Add("@Item", SqlDbType.NVarChar);
comm.Parameters.Add("@Qty", SqlDbType.NVarChar);
comm.Parameters.Add("@Ppcur", SqlDbType.NVarChar);
comm.Parameters.Add("@StandardPrice", SqlDbType.NVarChar);
comm.Parameters.Add("@CeMarked", SqlDbType.NVarChar);
comm.Parameters.Add("@Description", SqlDbType.NVarChar);
comm.Parameters.Add("@Description2", SqlDbType.NVarChar);
comm.Parameters.Add("@Edma", SqlDbType.NVarChar);
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
comm.Parameters["@VD"].Value = dataGridView1.Rows[i].Cells["VD"].Value;
comm.Parameters["@ItemCode"].Value = dataGridView1.Rows[i].Cells["ItemCode"].Value;
comm.Parameters["@Item"].Value = dataGridView1.Rows[i].Cells["ITEM"].Value;
comm.Parameters["@Qty"].Value = dataGridView1.Rows[i].Cells["QUANTITY"].Value;
comm.Parameters["@Ppcur"].Value = dataGridView1.Rows[i].Cells["PPCUR"].Value;
comm.Parameters["@StandardPrice"].Value = dataGridView1.Rows[i].Cells["STANDARD_SELL_PRICE"].Value;
comm.Parameters["@CeMarked"].Value = dataGridView1.Rows[i].Cells["CE-MARKED"].Value;
comm.Parameters["@Description"].Value = dataGridView1.Rows[i].Cells["ITEM_DESCRIPTION"].Value;
comm.Parameters["@Description2"].Value = dataGridView1.Rows[i].Cells["ITEM_DESCRIPTION2"].Value;
comm.Parameters["@Edma"].Value = dataGridView1.Rows[i].Cells["EDMA"].Value;
comm.ExecuteNonQuery();
}
sqlconnection.Close();
데이터베이스가 올바른 데이터로 가득 내가 프로그램 데이터베이스를 다시 시작할 때 이미 가득 차 있습니다. 이제 새로운 콘텐츠를 추가하기 전에 데이터베이스를 정리하면됩니다.
하나의 문제. 메시지 받기 : 한 데이터 유형에서 다른 데이터 유형으로 변환하는 동안 데이터가 잘 렸습니다. [함수 이름 (알려진 경우) =]
예, 문에서 ** 대규모 ** 문제가있다 - 당신이있어 ** 사용하지를 매개 변수! ** 따라서 SQL 주입 공격에 대해 열려 있습니다. ** SQL 문을 서로 연결하지 마십시오! ** 절대하지 마십시오. 매개 변수가있는 쿼리를 사용하십시오 - ** 항상 **. –
좋아, 어떻게 그 방법에 대한 링크? 아니면 예를 들어? –
** 수백만 **의 예가 있습니다 - [Google에서만 검색!] (https://www.google.ch/search?q=ado.net+parametrized+queries) –