在我的诊所管理项目中,我试图将新病人添加到数据库中,使用以下方法:
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);
}
我正在使用存储过程:
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()
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
,我不能将它更改为数字类型(主键必须是名称)。
我该怎么解决呢?
发布于 2020-06-22 22:47:46
你这里有个窃听器
catch (Exception ex)
{
MessageBox.Show("error", MessageBoxButtons.OK);
}
应该是这样的:
catch (Exception ex)
{
MessageBox.Show(ex.Message, MessageBoxButtons.OK);
}
发布于 2020-06-23 01:22:31
你可以按下面的方式来做,
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)
{
}
https://stackoverflow.com/questions/62524434
复制相似问题