【发布时间】:2015-12-24 03:45:36
【问题描述】:
我同时在两个表中插入数据...
CREATE PROCEDURE inserttwo
(
@BookID int,
@BookName nvarchar(50),
@DateIssue datetime,
@ReturnDate datetime,
@PersonID int
)
AS
INSERT INTO tblReturn(BookID, BookName, DateIssue, ReturnDate, PersonID)
VALUES(@BookID, @BookName, @DateIssue, @ReturnDate, @PersonID)
INSERT INTO tblIssue(BookID, BookName, DateIssue, ReturnDate, PersonID)
VALUES(@BookID, @BookName, @DateIssue, @ReturnDate, @PersonID)
然后我正在通过存储过程更新和删除这些表...
删除查询:
ALTER PROCEDURE [dbo].[Issuedelete]
(@BookID int)
AS
DELETE FROM tblIssue
WHERE BookID = @BookID
更新查询:
ALTER PROCEDURE [dbo].[IssueUpdate]
(@BookID int,
@BookName nvarchar(50),
@DateIssue datetime,
@ReturnDate datetime,
@PersonID int)
AS
UPDATE tblIssue
SET [BookID] = @BookID ,
[BookName] = @BookName,
[DateIssue] = @DateIssue,
[ReturnDate] = @ReturnDate,
[PersonID] = @PersonID
WHERE BookID = @BookID
要从 tblIssue 中删除的 C# 代码:
private void btnDelete_Click(object sender, EventArgs e)
{
try
{
string c = ConfigurationManager.ConnectionStrings["LMS"].ConnectionString;
SqlConnection con = new SqlConnection(c);
con.Open();
SqlCommand cmd = new SqlCommand("Issuedelete", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@BookID", ComBox1BookID.Text);
cmd.ExecuteNonQuery();
con.Close();
storedproc();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
更新tblIssue的C#代码:
private void btnupdate_Click(object sender, EventArgs e)
{
try
{
string c = ConfigurationManager.ConnectionStrings["LMS"].ConnectionString;
SqlConnection con = new SqlConnection(c);
con.Open();
SqlCommand cmd = new SqlCommand("IssueUpdate", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@BookID", ComBox1BookID.Text);
cmd.Parameters.AddWithValue("@BookName", ComBox2BName.Text);
cmd.Parameters.AddWithValue("@DateIssue", IssueDate.Value.ToString());
cmd.Parameters.AddWithValue("@ReturnDate", ReturnDate.Value.ToString());
cmd.Parameters.AddWithValue("@PersonID", CBox3PerID.Text);
cmd.ExecuteNonQuery();
con.Close();
storedproc();
}
catch (Exception ex)
{
Console.WriteLine("SqlError" + ex);
}
}
编译后报错
无法将数据类型转换为 int
我尝试了其他方法,通过使用 OleDB 和 SqlDbType 更改参数......但它不是删除和更新记录......当我更新和删除到 tblReturn 时也遇到同样的问题......请帮帮我? ?? :(
【问题讨论】:
-
那么您在编译时或运行应用程序时是否遇到错误?
-
@dotnetom 当我运行 n 更新我的记录时,它给出了一个错误...
-
您应该查看Can we stop using AddWithValue() already? 并停止使用
.AddWithValue()- 它可能会导致意想不到和令人惊讶的结果... -
@marc_s 我用 cmd.Parameters.Add("@BookID", SqlDbType.Int); 更改了 AddWithValue()我收到一个错误:“字符串输入格式不正确”。
-
@Warda:您是否试图将
int值设置为不是真正的int??
标签: c# sql-server stored-procedures