如何将C#中的Insert命令连续3次重复到SQL Server数据库

如何将C#中的Insert命令连续3次重复到SQL Server数据库,c#,sql-server-2008-r2,C#,Sql Server 2008 R2,我是新来的,这部分代码我真的有点麻烦。我需要根据给定的数量连续多次重复插入 int ctr = int.Parse(txtquantity3.ToString()); int x=0; SqlCommand cmd = new SqlCommand("INSERT INTO tbl_books (Book_num,Call_Num, Book_Title, Book_Author, Book_Publisher, Book_Quantity, Book_Pages, genre , Book_

我是新来的,这部分代码我真的有点麻烦。我需要根据给定的数量连续多次重复插入

int ctr = int.Parse(txtquantity3.ToString());
int x=0;

SqlCommand cmd = new SqlCommand("INSERT INTO tbl_books (Book_num,Call_Num, Book_Title, Book_Author, Book_Publisher, Book_Quantity, Book_Pages, genre , Book_available,book_status) VALUES (@Bn, @Cn, @Title, @Author, @Publisher, @Quantity, @Pages, @Genre, @Available, @Status)");
cmd.CommandType = CommandType.Text;
cmd.Connection = con;

MessageBox.Show("Save successful!");

while (x <= ctr)
{
    x += 1;

    cmd.Parameters.AddWithValue("@Bn", txtbooknum3.Text);
    cmd.Parameters.AddWithValue("@Cn", txtcallnum3.Text);
    cmd.Parameters.AddWithValue("@Title", txttitle3.Text);
    cmd.Parameters.AddWithValue("@Author", txtauthor3.Text);
    cmd.Parameters.AddWithValue("@Publisher", txtpublisher3.Text);
    cmd.Parameters.AddWithValue("@Quantity", txtquantity3.Text);
    cmd.Parameters.AddWithValue("@Pages", txtpages3.Text);
    cmd.Parameters.AddWithValue("@Genre", txtgenre3.Text);
    cmd.Parameters.AddWithValue("@Available", txtquantity3.Text);
    cmd.Parameters.AddWithValue("@Status", "Available");

    con.Open();
    cmd.ExecuteNonQuery();
}
int-ctr=int.Parse(txtquantity3.ToString());
int x=0;
SqlCommand cmd=new SqlCommand(“插入tbl_图书(图书编号、调用编号、图书标题、图书作者、图书出版商、图书数量、图书页面、流派、图书可用、图书状态)值(@Bn、@Cn、@Title、@Author、@Publisher、@Quantity、@Pages、@genre、@available、@status)”);
cmd.CommandType=CommandType.Text;
cmd.Connection=con;
MessageBox.Show(“保存成功!”);

而(x您不能以这种方式使用AddWithValue。SqlCommand实例始终相同,因此使用相同的参数名第二次调用AddWithValue会产生异常。您需要在每个循环中添加对

 while (x <= ctr)
 {
     x+=1;
     cmd.Parameters.Clear();
     ....

 }

while(x您不能以这种方式使用AddWithValue。SqlCommand实例始终相同,因此使用相同的参数名第二次调用AddWithValue会产生异常。您需要在每个循环中添加对

 while (x <= ctr)
 {
     x+=1;
     cmd.Parameters.Clear();
     ....

 }

while(x您不必每次执行命令时都打开连接。在while循环之前打开连接,然后再关闭连接。

您不必每次执行命令时都打开连接。在while循环之前打开连接,然后再关闭连接。

我同意所有关于正确使用ADO的其他建议

也就是说,什么是
txtquantity3
?从使用方式来看,它看起来像一个文本框控件


intctr=int.Parse(txtquantity3.text);

我同意关于ADO正确用户的所有其他建议

也就是说,什么是
txtquantity3
?从使用方式来看,它看起来像一个文本框控件


int-ctr=int.Parse(txtquantity3.text)

出了什么问题?每次我尝试插入一个新值时,即使我将数量设置为3,它也只会在我的数据库中插入一次。是否有理由要向表中添加3行具有相同信息的行?我看不到任何东西会在每个循环中驱动不同的数据,因此即使你弄明白了这一点,也会有3行重复数据库中唯一不同的行是自动生成的主键(如果使用)。现在,您似乎已经在可用字段中放置了txtquantity3.text,因此如果您这样做是因为您有3本书,那么您应该只需要插入一行。发生了什么问题?每次我尝试插入新值时,即使我将数量设置为3,它也只会在数据库中插入一次。您有什么原因吗要将具有相同信息的3行添加到表中吗?我在这里看不到每个循环驱动不同数据的情况,因此即使您解决了这个问题,您的数据库中也有3个重复行,唯一的区别是自动生成的主键(如果使用).现在看起来你已经在可用字段中放置了txtquantity3.text,所以如果你这样做是因为你有3本书,那么你应该只需要插入一行。他可以打开连接一次。我确实像你说的那样。但它仍然插入数据库一次。你认为这可能与我的Prima有关吗ry键被设置为自动递增,应该是
cnn.Open()
但我相信你在实现中已经解决了这个问题。@Mat你对这段代码有什么想法吗?如果有,请删除它并让异常显示出来。你怎么知道插入只执行了一次呢?@Steve谢谢。它已经起作用了。显然我的C#有问题。我尝试重新启动,然后它就消失了denly开始工作了。再次非常感谢:Dand他可以打开一次连接。我按照你说的做了。但是它仍然插入到数据库中一次。你认为这可能与我的主键被设置为自动递增有关,应该是
cnn.open()
但我相信你在实现中已经解决了这个问题。@Mat你对这段代码有什么想法吗?如果有,请删除它并让异常显示出来。你怎么知道插入只执行了一次呢?@Steve谢谢。它已经起作用了。显然我的C#有问题。我尝试重新启动,然后它就消失了丹利开始工作了。再次非常感谢你:D
using(SqlConnection con = new SqlConnection(.....))
using(SqlCommand cmd = new SqlCommand(@"INSERT INTO tbl_books 
            (Book_num,Call_Num, Book_Title, Book_Author, 
            Book_Publisher, Book_Quantity, Book_Pages, genre , 
            Book_available,book_status) 
            VALUES (@Bn, @Cn, @Title, @Author, @Publisher, @Quantity, 
            @Pages, @Genre, @Available, @Status)", con))
{
    con.Open();
    // Create all the parameters required SPECIFYING the correct datatype
    cmd.Parameters.Add("@Bn", SqlDbType.NVarChar).Value = txtbooknum3.Text;
    ...... declare other parameters and set the value before the loop....

    // Start your loop  
    while (x <= ctr)
    {
        x+=1;
        // Just execute the query three times
        cmd.ExecuteNonQuery();
    }
}