我一直在尝试使用相同的SqlConnection
和SqlCommand
对象来执行不同的命令。使用sql命令不止一次使用不同的命令
第一个检查重复,第二个插入数据,如果用户输入的数据不重复。
这里是我的代码示例:
using (SqlConnection conn = new SqlConnection(ConnStr))
{
string Command = "SELECT CountryName FROM [Countries] WHERE CountryName = @Name";
using (SqlCommand comm = new SqlCommand(Command, conn))
{
comm.Parameters.Add("@Name", System.Data.SqlDbType.NVarChar, 20);
comm.Parameters["@Name"].Value = Name;
comm.Parameters.Add("@IsVisible", System.Data.SqlDbType.Bit);
comm.Parameters["@IsVisible"].Value = IsVisible;
conn.Open();
if (comm.ExecuteScalar() == null)
{
Command = "INSERT INTO [Countries] (CountryName, IsVisible) VALUES (@Name, @IsVisible);";
comm.ExecuteNonQuery();
}
}
我试图用一个连接保存访问数据库。
的问题是:
第一个命令运行不错,但其插入到 数据库 第二个命令将无法正常工作(不加任何 记录到数据库)和当我 试图显示受影响的行它 给了我-1!
的问题是:
这是检查 重复记录约束 国内独一无二的理想方式?以及为什么第二个 命令没有执行?
因为[连接池](http://msdn.microsoft.com/zh-cn/library/8xx3tyca.aspx),您不明确*需要*使用相同的数据库连接来保存到数据库的行程,几乎肯定会被使用(除非你明确禁用了它)。如果您执行两次(使用相同的连接或不),将有两个调用数据库。 – steinar 2011-03-28 23:07:12
感谢您的提示+1 ..但在您看来,您是否认为有一种方法可以在我的情况下节省旅行以减少Db的负担? – lKashef 2011-03-28 23:11:44
绝对是如果你使用存储过程。这是一个选择吗? – steinar 2011-03-28 23:15:22