首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >system.data.sqlclient.sqlException on ExecuteNonQuery()

system.data.sqlclient.sqlException on ExecuteNonQuery()
EN

Stack Overflow用户
提问于 2020-06-22 22:23:14
回答 2查看 308关注 0票数 0

在我的诊所管理项目中,我试图将新病人添加到数据库中,使用以下方法:

代码语言:javascript
运行
复制
public void create_Patient()
{
    SqlCommand c = new SqlCommand();
    c.CommandText = "EXECUTE SP_add_patient @ownerID, @ownername, @petname, @animaltype, @animalbirthyear, @owneradress, @ownerphone";
    c.Parameters.AddWithValue("@ownerID", this.ownerID.ToString());
    c.Parameters.AddWithValue("@ownername", this.ownername.ToString());
    c.Parameters.AddWithValue("@petname", this.petname.ToString());
    c.Parameters.AddWithValue("@animaltype", this.animalType.ToString());
    c.Parameters.AddWithValue("@animalbirthyear", this.animalBirthYear.ToString());
    c.Parameters.AddWithValue("@owneradress", this.ownerAddress.ToString());
    c.Parameters.AddWithValue("@ownerphone", this.ownerPhone.ToString());
    c.Parameters.AddWithValue("@owneremail", this.ownerEmail.ToString());

    SQL_CON SC = new SQL_CON();
    SC.execute_non_query(c);
}

我正在使用存储过程:

代码语言:javascript
运行
复制
CREATE PROCEDURE dbo.SP_add_patient
    @ownerID varchar(100)
    , @ownername varchar(100)
    , @petname varchar(100)
    , @animaltype varchar(100)
    , @animalbirthyear int
    , @owneradress varchar(100)
    , @ownerphone varchar(100)
    , @owneremail varchar(100) AS 
INSERT INTO dbo.patientValues (@ownerID
                              ,@ownername
                              ,@petname
                              ,@animaltype
                              ,@animalbirthyear
                              ,@owneradress
                              ,@ownerphone
                              ,@owneremail);

execute_non_query(c)中,我使用ExecuteNonQuery()

代码语言:javascript
运行
复制
public void execute_non_query(SqlCommand cmd)
{

    try
    {
        // open a connection object
        this.conn.Open();
        cmd.Connection = conn;
        cmd.ExecuteNonQuery();
    }
    catch (Exception ex)
    {
        MessageBox.Show("error", MessageBoxButtons.OK);
    }
    finally
    {
        if (conn != null)
        {
            conn.Close();
        }
    }
}

当我到达ExecuteNonQuery()时,我得到了一个例外:

system.data.sqlclient.sqlException异常

我寻找了一个解决方案,并试图更改标识规范,但是主键类型是varchar,我不能将它更改为数字类型(主键必须是名称)。

我该怎么解决呢?

EN

回答 2

Stack Overflow用户

发布于 2020-06-22 22:47:46

你这里有个窃听器

代码语言:javascript
运行
复制
    catch (Exception ex)
    {
        MessageBox.Show("error", MessageBoxButtons.OK);
    }

应该是这样的:

代码语言:javascript
运行
复制
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, MessageBoxButtons.OK);
    }
票数 0
EN

Stack Overflow用户

发布于 2020-06-23 01:22:31

你可以按下面的方式来做,

代码语言:javascript
运行
复制
try
{
    SqlTransaction trx = null;
    connection = new SqlConnection(connectionString);
    connection.Open();
    trx = connection.BeginTransaction();
    
    SqlCommand c = new SqlCommand("[dbo].[SP_add_patient]", connection, trx);
    
    c.CommandType = CommandType.StoredProcedure;
    c.Parameters.AddWithValue(""@ownerID", this.ownerID.ToString());

    c.ExecuteNonQuery();
    trx.Commit();
    connection.Close();

}
catch (SqlException e)
{
                
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62524434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档