-1

我有一个带有 50 个不同字段(文本框、组合框、列表视图、复选框)的大型 windows 窗体我在 sql server 数据库中有 10 个表每个表都有不同的列我想在这 10 个表中插入我的 windows 窗体 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 个表,
这将需要很长时间,如果存在任何短方法,请指导我。

4

2 回答 2

1

您可以为此创建一个存储过程。为了创建存储过程,您可以使用以下 SQL 查询:

Create procedure [dbo].[NewUser] 
@Yourparameter1 int , 
@Yourparamtere2
As
Insert into dbo.Users 
( 
 // Db columns 
 Column1 , 
 Column2 
) 
values 
( 
@Yourparameter1
@Yourparameter2
) 

在您的 C# 代码中,创建一个SQLParameter集合并将其传递给该过程。它将工作正常且顺利,这样你的代码会更简单。

于 2013-07-06T04:57:01.877 回答
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

现在,这仅适用于插入记录示例。

于 2013-07-06T04:57:08.163 回答