【问题标题】:How to show a error message if the data is already inserted in the database in c#如果数据已在c#中插入数据库中,如何显示错误消息
【发布时间】:2010-07-03 08:10:18
【问题描述】:
protected void Button2_Click(object sender, EventArgs e)
{
    SqlConnection conn = new SqlConnection("Data Source=KING;Initial Catalog=semasinter;Integrated Security=True");
    SqlCommand command = new SqlCommand("insert into StudentApplication", conn);
    command.CommandType = CommandType.StoredProcedure;
    command.CommandText = "spinsertstudentapplication";
    command.Parameters.AddWithValue("@Student_id", TextBox1.Text); 
    //command.Parameters.AddWithValue ("@Select_Course", ddlCourse.SelectedValue);
    command.Parameters.AddWithValue("@Select_Country", TextBox4.Text);
    command.Parameters.AddWithValue("@Select_State", TextBox2.Text);
    command.Parameters.AddWithValue("@Select_Franchise", TextBox3.Text);
    command.Parameters.AddWithValue("@Select_Sensei", ddlSensei.SelectedValue);
    command.Parameters.AddWithValue("@Group", TextBox6.Text);
    command.Parameters.AddWithValue("@Enter_Student_Name", TextBox7.Text);
    command.Parameters.AddWithValue("@Enter_Student_Address", TextBox8.Text);
    command.Parameters.AddWithValue("@Students_Father_Name", TextBox9.Text);
    command.Parameters.AddWithValue("@Student_DOB", TextBox10.Text);
    if (RadioButton2.Checked == true)
    {
        command.Parameters.Add("@Gender", SqlDbType.Bit).Value = true;

    }
    else
    {
        command.Parameters.Add("@Gender", SqlDbType.Bit).Value = false;

    }
    command.Parameters.Add("@Enter_Kyu", SqlDbType.NVarChar).Value = TextBox11.Text;       
    conn.Open();
    int rows = command.ExecuteNonQuery();   //// in these line i got a error message   
    conn.Close();

}

朋友们可以帮帮我吗

【问题讨论】:

  • 帮助?什么?你没有问任何问题。
  • 你得到什么错误信息?
  • 告诉我们更多关于您要插入的表的信息。它有任何唯一索引吗?你现在有没有例外,如果有,他们怎么说?
  • 不同的问题标题,和不同的post中的问题??我回答你的问题取决于标题
  • 不要不要一直重复这个问题。如果你想添加细节,编辑这个

标签: c#


【解决方案1】:

究竟是什么问题 - 您不知道如何显示错误消息?值得一提的是,用用户输入的数据填充主键通常是不好的做法。

老实说,看起来您要求的解决方案是将MessageBox.Show(ex.Message); 放入您的catch 块中,但这并不能解决此代码背后的更深层次的问题。这还假设您在 WinForms 或 WPF 应用程序中,但情况可能并非如此。您可能应该发布更多上下文和更具体的问题...

【讨论】:

    【解决方案2】:
        ALTER PROCEDURE [dbo].[spCheckDupEmployee]
    @empId int,
    @empName varchar(100),
    @empCode varchar(10),
    @Message varchar(1000) OUTPUT
    
    AS
    SELECT @Message =''
    
    BEGIN
    SELECT * FROM Employee WHERE empName = @empName  AND empId NOT IN(@empId)--AND cmpDeleteFlag = 0
    IF @@ROWCOUNT > 0
        BEGIN
        SELECT @Message ='Same Employee Name Exists!'
        RETURN
        END
    SELECT * FROM Employee WHERE empCode = @empCode  AND empId NOT IN(@empId)--AND cmpDeleteFlag = 0
    IF @@ROWCOUNT > 0
        BEGIN
        SELECT @Message ='Same Employee Code Exists!'
        RETURN
        END
    RETURN
    END
    

    这会检查重复并发回消息。
    现在将此消息字符串提供给 messagebox.show() 方法..

    前;

    messagebox.show(msg,APPName);
    

    【讨论】:

    • 如果您发布代码或 XML,在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮 (101 010) 以很好地格式化和语法高亮!
    【解决方案3】:

    您可以使用当前的 studentId 检查数据库。如果 count return > 0 ,则表示已经为该学生插入了数据。关键是在这里你可以抛出新的异常“这个学生已经存在”

    【讨论】:

      【解决方案4】:
      ALTER PROCEDURE [dbo].[spCheckDupEmployee]
      @empId int,
      @empName varchar(100),
      @empCode varchar(10),
      @Message varchar(1000) OUTPUT
      
      AS
      SELECT @Message =''
      
      BEGIN
      SELECT * FROM Employee WHERE empName = @empName  AND empId NOT IN(@empId)--AND cmpDeleteFlag = 0
      IF @@ROWCOUNT > 0
          BEGIN
          SELECT @Message ='Same Employee Name Exists!'
          RETURN
          END
      

      尝试这种查询来检查重复..!!

      【讨论】:

      • 如果您发布代码或 XML,在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮 (101 010) 以很好地格式化和语法高亮!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 2015-01-01
      • 2019-07-09
      • 2018-12-20
      • 1970-01-01
      相关资源
      最近更新 更多