【发布时间】:2017-10-09 15:55:03
【问题描述】:
我有一个函数和一个检查记录是否存在于数据库中的过程。它假设当记录存在时得到 1 而不存在时得到 0。我执行了我的程序它工作正常,但在 Visual Studio 中不起作用。我找不到问题 这是我的程序
Create PROCEDURE [dbo].[checkRepititiveModel]
@modelName nvarchar(50)
as
If EXISTS ( SELECT * FROM models WHERE modelName = @modelName)
begin
return 1
end
Else
begin
return 0
end
以下是我的功能:
public int CheckRepetitive(string connectionString,string modelName)
{
SqlCon = new SqlConnection(connectionString);
if (SqlCon.State != ConnectionState.Open)
{
SqlCon.Open();
}
SqlCommand com = new SqlCommand("checkRepititiveModel", SqlCon);
com.Parameters.AddWithValue("@modelName", modelName);
com.CommandType = CommandType.StoredProcedure;
int result = Convert.ToInt32(com.ExecuteScalar());
if (SqlCon.State != ConnectionState.Closed)
{
SqlCon.Close();
}
return result;
}
我检查一下主表单中的 if 语句
int a = Db.CheckRepetitive(ConStr, txtBxModelName.Text);
if (a > 0)
{
MessageBox.Show(a.ToString() + " exist!!");
return;
}
【问题讨论】:
-
“ExecuteScholar”听起来像是一些真正的野蛮反教育行动
-
你应该小心
AddWithValue,在这种特定情况下很好,但是有it can cause you to not use indexes in your database if it chooses the wrong type的情况,最好使用Add并传入一个类型。