請幫我在這個 queryToDB SqlCommand 中添加引數
這是代碼
cons = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
cons.Open();
SqlCommand queryToDB = new SqlCommand("INSERT INTO [dbo].[FileUploadDBs] values (@Name, @Path, @Blasted, @CreatedBy, @CreatedDate)", cons);
//param.ParameterName "@Name";
//param.Value = prefix extension;
//string queryToDB = "INSERT INTO [dbo].[FileUploadDBs] values (@Name, @Path, @Blasted, @CreatedBy, @CreatedDate)";
connExcel.Open();
cmdExcel.CommandText =
"SELECT NAMA , REPLACE(NOHP, '-', '' ) as NOHP,TANGGAL, NOMINAL From [" sheetName
"] WHERE NAMA IS NOT NULL OR NoHP IS NOT NULL OR Tanggal IS NOT NULL OR NOMINAL IS NOT NULL";
odaExcel.SelectCommand = cmdExcel;
//dapetin data dimasukin ke dtSheet
odaExcel.Fill(dtSheet);
connExcel.Close();
我想添加引數:
@Name = prefix extension
@Path = filepath extension
@Blasted = 0
@CreatedBy = user
@CreatedDate = DateTime.Now()
我不知道使用 SqlCommand 因為它是第一次使用它。謝謝 :)
uj5u.com熱心網友回復:
正如其他人評論的那樣,我的回答更像是評論而不是答案,我將展開。我只是在追隨 M4N 提供的類似產品。
但是,我發現,并且其他人指出,雖然您不需要顯式列出要插入的表的所有列,但這也意味著您按照它們在表結構中的順序插入它們。如果您的引數像@var1、@var2、@var3 那樣簡單,但代表表的column7、column2、column4,那么您就完蛋了,尤其是在資料型別不同的情況下。
因此,明確說明列的需要可以防止產生歧義的結果,正如另一個所指出的那樣。如果表結構發生變化并且不允許空值,至少您會收到一條錯誤訊息,指出插入失敗,因為 columnX 不允許空值,您可以顯式修復它。
所以,回到答案,明確地包括要插入的列。我也嘗試不使用確切的列名作為@引數,再次是為了模棱兩可。不想在精神上混淆列與引數,所以我會做@parmColumnName - 但同樣,這只是我。我會
var queryToDB = new SqlCommand(
@"INSERT INTO [dbo].[FileUploadDBs]
( Name,
Path,
Blasted,
CreatedBy,
CreateDate )
values
( @parmName,
@parmPath,
@parmBlasted,
@parmCreatedBy,
@parmCreatedDate)", cons);
queryToDB.Parameters.Add("@parmName", SqlDbType.VarChar) { Value = yourVarContainingTheName };
queryToDB.Parameters.Add("@parmPath", SqlDbType.VarChar) { Value = yourVarForThePath };
// guessing on data type for blasted and created by
queryToDB.Parameters.Add("@parmBlasted", SqlDbType.Int) { Value = yourVarForBlasted };
// guessing on data type for created by, could be a foreign key to user lookup table
queryToDB.Parameters.Add("@parmCreatedBy", SqlDbType.Int) { Value = yourVarForCreatedBy };
queryToDB.Parameters.Add("@parmCreateDate", SqlDbType.DateTime2) { Value = DateTime.Now };
此外,由于將引數命名為匹配,即使您亂序添加它們,但匹配給定的 SQL 命令,它也會找到它們并可用,但更好的做法和習慣是按相同的順序添加。
uj5u.com熱心網友回復:
向 SqlCommand 添加引數有多種方法,例如:
command.Parameters.Add("@ID", SqlDbType.Int).Value = customerID;
或者
command.Parameters.AddWithValue("@demographics", demoXml);
例如,你可以使用這個:
queryToDB.Parameters.AddWithValue("@Name", prefix extension);
uj5u.com熱心網友回復:
使用AddWithValueSqlCommand 的方法
https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlparametercollection.addwithvalue?view=dotnet-plat-ext-6.0
cons = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
cons.Open();
SqlCommand queryToDB = new SqlCommand("INSERT INTO [dbo].[FileUploadDBs] values (@Name, @Path, @Blasted, @CreatedBy, @CreatedDate)", cons);
queryToDB.Parameters.AddWithValue("@Name",prefix extension);
queryToDB.Parameters.AddWithValue("@Path", filepath extension);
queryToDB.Parameters.AddWithValue("@Blasted", 0);
queryToDB.Parameters.AddWithValue("@CreatedBy", user);
queryToDB.Parameters.AddWithValue("@CreatedDate", DateTime.Now());
//param.ParameterName "@Name";
//param.Value = prefix extension;
//string queryToDB = "INSERT INTO [dbo].[FileUploadDBs] values (@Name, @Path, @Blasted, @CreatedBy, @CreatedDate)";
connExcel.Open();
cmdExcel.CommandText =
"SELECT NAMA , REPLACE(NOHP, '-', '' ) as NOHP,TANGGAL, NOMINAL From [" sheetName
"] WHERE NAMA IS NOT NULL OR NoHP IS NOT NULL OR Tanggal IS NOT NULL OR NOMINAL IS NOT NULL";
odaExcel.SelectCommand = cmdExcel;
//dapetin data dimasukin ke dtSheet
odaExcel.Fill(dtSheet);
connExcel.Close();
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/420169.html
標籤:
上一篇:如何將兩個查詢加入一列
下一篇:用空白替換特定字符
