我有一个带有50个不同字段的大型窗体(文本框,组合框,列表视图,复选框)我在sql server数据库中有10个表每个表都有不同的列我想在这10个窗口中插入我的窗体50个字段表。这是我在表中插入记录的代码
Dim cmd As New SqlCommand
cmd.Connection = conn
cmd.CommandText = "Insert Into ChartOfAccount (MainCode,MainDescription,AccountCode,AccountDescription,OpeningBalance) values ('" & MainCode & "','" & MainDescription & "','" & AccountCode & "','" & AccountDescription & "','" & OpeningBalance & "')"
cmd.ExecuteNonQuery()
所以问题是如果我将数据插入10个不同的表中,那么我需要编写10个插入语句。
如果我更新或删除记录,我需要分别编写更新和删除命令10个表 这需要很长时间,如果有任何简短的方法,请指导我。
答案 0 :(得分:1)
您可以为其创建存储过程。要创建存储过程,可以使用以下SQL查询:
Create procedure [dbo].[NewUser]
@Yourparameter1 int ,
@Yourparamtere2
As
Insert into dbo.Users
(
// Db columns
Column1 ,
Column2
)
values
(
@Yourparameter1
@Yourparameter2
)
在您的C#代码中,创建一个SQLParameter
集合并将其传递给该过程。它可以很好地工作,这样你的代码就会更简单。
答案 1 :(得分:1)
您的查询易受SQL注入影响,因此最好使用参数:
Dim connStr as String = "connection string values here";
using con as new SqlConnection(connStr)
Dim commandText as String =
@"Insert Into ChartOfAccount (MainCode
,MainDescription,AccountCode
,AccountDescription,OpeningBalance)
VALUES
(@MainCode, @MainDesc,@AccountCode
,@AccountDesc,@OpeningBalance)"
Dim cmd as New SqlCommand(commandText,con)
cmd.Parameters.AddWithValue("@MainCode",MainCode)
cmd.Parameters.AddWithValue("@MainDesc",MainDescription)
cmd.Parameters.AddWithValue("@AccountCode",AccountCode)
cmd.Parameters.AddWithValue("@AccountDesc",AccountDescription)
cmd.Parameters.AddWithValue("@OpeningBalance",OpeningBalance)
Try
con.Open()
cmd.ExecuteNonQuery()
Catch ex as Exception
MessageBox.Show(ex.Message)
End Try
End Using
现在,这仅适用于插入记录示例。