c#数据库添加表

本文关键字:添加 数据库 | 更新日期: 2023-09-27 18:15:47

我在Visual Studio 2010中使用。mdf数据库。当我向表中添加信息时,我得到了错误。当我把前四行相加时没有任何问题。但是当我添加第五行时,我得到了错误。

错误如下:

SqlException未处理

有什么问题吗?

        dataAccess.AddQuestion("Category1", "Question1?", "1");
        dataAccess.AddQuestion("Category2", "Question2?", "2");
        dataAccess.AddQuestion("Category3", "Question3?", "3");
        dataAccess.AddQuestion("Category4", "Question4?", "4");
        dataAccess.AddQuestion("Category5", "Question5?", "5");

当我添加问题5时,我得到了错误。

这是我如何将信息添加到数据库中的表的方法。

    public void AddQuestion(string title, string question, string answer)
    {
        sqlConnection = new SqlConnection(connectionString);
        sqlCommand = new SqlCommand("INSERT INTO QuestionTable VALUES(@Title, @Question, @Answer)", sqlConnection);
        try
        {
            sqlConnection.Open();
            sqlCommand.Parameters.Add(new SqlParameter("@Title", title));
            sqlCommand.Parameters.Add(new SqlParameter("@Question", question));
            sqlCommand.Parameters.Add(new SqlParameter("@Answer", answer));
            sqlCommand.ExecuteNonQuery();
            sqlConnection.Close();
        }
        catch (Exception ex)
        {
            throw(ex);
        }
    }

c#数据库添加表

是否有理由不为SQL对象使用方法作用域变量?试着这样写:

public void AddQuestion(string title, string question, string answer)
{
    using (SqlConnection sqlConnection = new SqlConnection(connectionString))
    using (SqlCommand sqlCommand = new SqlCommand("INSERT INTO QuestionTable VALUES(@Title, @Question, @Answer)", sqlConnection))
    {
        try
        {
            sqlConnection.Open();
            sqlCommand.Parameters.Add(new SqlParameter("@Title", title));
            sqlCommand.Parameters.Add(new SqlParameter("@Question", question));
            sqlCommand.Parameters.Add(new SqlParameter("@Answer", answer));
            sqlCommand.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine(ex); 
            throw; 
        }
    }
}

如果你考虑迁移到SQL Server 2008或更新版本,你也可以看看表值参数

为什么你不使用多个插入语句一次插入多行,因为它们总是限制每个应用程序池连接到数据库的数量,所以你必须不关闭连接或一次使用多个插入

试试下面的代码,也许你需要锁()

    private static readonly object Locker = new object();
    public void AddQuestion(string title, string question, string answer)
    {
        lock (Locker)
        {
            try
            {
                sqlConnection = new SqlConnection("");
                sqlCommand = new SqlCommand("INSERT INTO QuestionTable VALUES(@Title, @Question, @Answer)", sqlConnection);
                sqlConnection.Open();
                sqlCommand.Parameters.Add(new SqlParameter("@Title", title));
                sqlCommand.Parameters.Add(new SqlParameter("@Question", question));
                sqlCommand.Parameters.Add(new SqlParameter("@Answer", answer));
                sqlCommand.ExecuteNonQuery();
                sqlConnection.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("That is the Error:" ex.ToString()); // post this Text if it doesn't work
                throw (ex);
            }
        }
    }

我找到了问题(错误)!在数据库中,我使用nvarchar(50),但我有一个字符串,这是52个字符。我因此得到了错误。