C# 选择,更新查询c错误
我正在将excel文件导入sql数据库。我使用的工作代码是:C# 选择,更新查询c错误,c#,sql,.net,parameterized-query,C#,Sql,.net,Parameterized Query,我正在将excel文件导入sql数据库。我使用的工作代码是: public static void ImportToSql(string excelfilepath) { string ssqltable = "Inventory"; string myexceldataquery = "select LocalSKU,QOH from [sheet1$]"; try { str
public static void ImportToSql(string excelfilepath)
{
string ssqltable = "Inventory";
string myexceldataquery = "select LocalSKU,QOH 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=CAMO;CONNECTION RESET=FALSE";
//execute a query to erase any previous data from our destination table
string sclearsql = "delete " + ssqltable;
enter code here
"HERE I DON'T WANT THIS STEP TO DELETE TABLE DATA AND THEN INSERTING IT.INSTEAD I WANT TO UPDATE TABLE DATA"
SqlConnection sqlconn = new SqlConnection(ssqlconnectionstring);
SqlCommand sqlcmd = new SqlCommand(sclearsql, sqlconn);
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);
}
Console.WriteLine(".xlsx file imported succssessfully into database.", bulkcopy.NotifyAfter);
oledbconn.Close();
}
我不知道如何更新它,这就是为什么我要做的是删除数据,然后插入。请帮助我根据primarykey表LocalSKU更新QOH列
我尝试了以下操作,但它给出了一个错误,即Merge语句必须以半列终止
SqlCommand sqlcmd = new SqlCommand(@"MERGE Inventory AS target
USING (select LocalSKU, QOH from @source) as source
ON (source.ID = target.ID)
WHEN MATCHED THEN
UPDATE SET QOH = source.QOH
WHEN NOT MATCHED THEN
INSERT (LocalSKU, QOH )
VALUES (source.LocalSKU, source.QOH )", sqlconn);
SqlParameter param=new SqlParameter();
sqlcmd.Parameters.AddWithValue("@source", ssqltable);
param.SqlDbType = SqlDbType.Structured;
param.TypeName = "dbo.tStudent";
基本上,我只想要两列KitSKU和Quantity
表套件中的列
更改:
SqlDataAdapter da = new SqlDataAdapter("select * from [KitSKU] , [Quantity] from Kits", sqlCon);
致:
您要从表:Kits中选择列:[KitSKU]和[Quantity]
谢谢,麦克斯。。另外,如果我想更新它而不是插入,如何 实现这一点 使用以下代码更新套件和数量:
SqlDataAdapter da = new SqlDataAdapter("update Kits set [KitSKU] = 'entersku' ,[Quantity] = 5 where [KutSKU] = 'what record it should update'", sqlCon);
但我不建议使用这种代码,因为它不是参数化的,我认为您应该尝试一些基本的sql课程和使用sql参数
基本上,我只想要两列KitSKU和Quantity
表套件中的列
更改:
SqlDataAdapter da = new SqlDataAdapter("select * from [KitSKU] , [Quantity] from Kits", sqlCon);
致:
您要从表:Kits中选择列:[KitSKU]和[Quantity]
谢谢,麦克斯。。另外,如果我想更新它而不是插入,如何 实现这一点 使用以下代码更新套件和数量:
SqlDataAdapter da = new SqlDataAdapter("update Kits set [KitSKU] = 'entersku' ,[Quantity] = 5 where [KutSKU] = 'what record it should update'", sqlCon);
但我不建议使用这种代码,因为它不是参数化的,我认为您应该尝试一些基本的sql课程并使用sql参数。您的查询应该是:选择[KitSKU],[Quantity]fromKits@user2525244也许最好在另一个问题中提出更新问题。更多的答案将帮助您更快地找到答案,因为这个问题已经得到了回答。您的查询应该是:从中选择[KitSKU],[Quantity]Kits@user2525244也许最好在另一个问题中提出更新问题。更多的答案将帮助你更快,因为这个问题已经得到了回答。谢谢Max。。另外,如果我想更新它,而不是插入,那么如何在表工具包中实现该.KitSKU和Quantity。实际上,我正在将excel导入sql数据。目前,我正在通过从该表中删除数据,然后插入来实现它。但我想将其实现为更新。KitSKU和Quantity是什么数据类型?KitSKU varchar200,pk[is Identity设置为No],Quantity intSo KitSKU是您的主键?所以你只想更新数量?谢谢Max。。另外,如果我想更新它,而不是插入,那么如何在表工具包中实现该.KitSKU和Quantity。实际上,我正在将excel导入sql数据。目前,我正在通过从该表中删除数据,然后插入来实现它。但我想将其实现为更新。KitSKU和Quantity是什么数据类型?KitSKU varchar200,pk[is Identity设置为No],Quantity intSo KitSKU是您的主键?所以你只想更新数量?