c# - 如果记录存在则不插入

标签 c# mysql sql asp.net database

我正在尝试一些东西,但无法弄清楚。所以我正在尝试的是,如果用户在 txtISN 中输入某些内容并且它已经存在于数据库中,则不会插入记录。我还希望在未插入记录时弹出错误消息,并且在插入记录时弹出一条消息,表明记录已成功插入。

感谢大家的帮助!

 string _connStr = @"Data Source = EJQ7FRN; Initial Catalog = BES; Integrated Security = True";
                string _query = "INSERT INTO [BES_S] (ISN,Titel,Name) values (@ISN,@Titel,@Name)";
                using (SqlConnection conn = new SqlConnection(_connStr))
                {
                    using (SqlCommand comm = new SqlCommand())
                    {
                        comm.Connection = conn;
                        comm.CommandType = CommandType.Text;
                        comm.CommandText = _query;
                        comm.Parameters.AddWithValue("@ISN", txtISN.Text);
                        comm.Parameters.AddWithValue("@Titel",txtTitel.Text);
                        comm.Parameters.AddWithValue("@Name", txtName.Text);
                        try
                        {
                            conn.Open();
                            comm.ExecuteNonQuery();
                        }
                        catch (SqlException ex)
                        {

                        }
                    }
                }

最佳答案

你需要稍微改变你的查询,但是你可以使用MySql的DUAL执行此操作的关键字:

string _connStr = @"Data Source = EJQ7FRN; Initial Catalog = BES; Integrated Security = True";
string _query = "INSERT INTO [BES_S] (ISN,Titel,Name) ";
_query = _query + " SELECT @ISN, @Titel, @Name FROM DUAL";
_query = _query + " WHERE NOT EXISTS (SELECT ISN WHERE ISN=@ISN)";

using (SqlConnection conn = new SqlConnection(_connStr))
{
    using (SqlCommand comm = new SqlCommand())
    {
        comm.Connection = conn;
        comm.CommandType = CommandType.Text;
        comm.CommandText = _query;
        comm.Parameters.AddWithValue("@ISN", txtISN.Text);
        comm.Parameters.AddWithValue("@Titel",txtTitel.Text);
        comm.Parameters.AddWithValue("@Name", txtName.Text);
        try
        {
            conn.Open();
            comm.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {

        }
    }
}

DUAL 就像一个虚拟表,您可以使用它来SELECT

关于c# - 如果记录存在则不插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36655189/

相关文章:

c# - 并行处理让UI卡顿正常吗

c# - 这个 "tool"是什么以及如何禁用它?

c# - 是否有一种已知的算法可以找到每对之间距离相同的节点之间的最短距离?

c# - 为什么 Process.WaitForExit 不等待?

mysql - MySQL 中何时使用单引号、双引号和反引号

mysql - 错误 1215 外键约束

mysql - 如何生成动态交叉表查询

mysql - 就性能而言,哪个版本的 MySQL 5.5 更可取?

sql - PostgreSQL 非常慢的索引扫描

mysql - 在 SQL 中按年份排序