我正在將excel文件導入到sql server數據庫中。代碼工作正常,但我目前的做法是刪除(清除表)表數據。將Excel .xslx文件導入到sql server中:更新表中的難度
string ssqltable = "tStudent";
string myexceldataquery = "select id,student,rollno,course from [sheet1$]";
try
{
string sexcelconnectionstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" + excelfilepath + "; Extended Properties=\"Excel 12.0; HDR=Yes; IMEX=2\"";
string ssqlconnectionstring = "Data Source=DELL\\SQLSERVER1;Trusted_Connection=True;DATABASE=Test;CONNECTION RESET=FALSE";
SqlConnection sqlconn = new SqlConnection(ssqlconnectionstring);
SqlCommand sqlcmd = new SqlCommand(@"MERGE tStudent AS target
USING (select ID, STUDENT , ROLLNO from @source) as source
ON (source.ID = target.ID)
WHEN MATCHED THEN
UPDATE SET Student = source.Student,
ROLLNO = source.ROLLNO
WHEN NOT MATCHED THEN
INSERT (ID, STUDENT , ROLLNO)
VALUES (source.id, source.Student, source.RollNo);", sqlconn);
******************************************
SqlParameter param = new SqlParameter();
sqlcmd.Parameters.AddWithValue("@source", dr);
param.SqlDbType = SqlDbType.Structured;
param.TypeName = "dbo.tStudent";
******************************************
sqlconn.Open();
sqlcmd.ExecuteNonQuery();
sqlconn.Close();
//series of commands to bulk copy data from the excel file into our sql table
OleDbConnection oledbconn = new OleDbConnection(sexcelconnectionstring);
OleDbCommand oledbcmd = new OleDbCommand(myexceldataquery, oledbconn);
oledbconn.Open();
OleDbDataReader dr = oledbcmd.ExecuteReader();
SqlBulkCopy bulkcopy = new SqlBulkCopy(ssqlconnectionstring);
bulkcopy.DestinationTableName = ssqltable;
bulkcopy.WriteToServer(dr);
while (dr.Read())
{
//bulkcopy.WriteToServer(dr);
}
oledbconn.Close();
Console.WriteLine(".xlsx file imported succssessfully into database.", bulkcopy.NotifyAfter);
}
請參閱*部分。我已經在SqlParameters中分配了我的OleDb DataRreader dr,但後來在代碼中聲明瞭它。請指導我如何構建我的代碼。
示例將不勝感激。
你想要[插入](http://technet.microsoft.com/en-us/library/dd776381(v = sql.105).aspx)不是更新。在SQL中,UPDATE更改現有值。 – RadioSpace
@RadioSpace我想在Sql中更新。有一段時間,我正在刪除數據並插入它。但現在我想更新這些數據。我覺得我傳入的更新查詢和參數不是一個正確的方法。謝謝。 – user2525244
@ConradFrix我可以使用任何東西,只是我是一個初學者,我想要一些更簡單的代碼。我不熟悉合併和表值參數。謝謝。 – user2525244