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);
}
}
是否有理由不为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个字符。我因此得到了错误。