- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这是我的代码:
Document doc = new Document();
SqlConnection cnn = Ketnoi.GetSqlConnection();
cnn.Open();
SqlTransaction trans = cnn.BeginTransaction();
doc.setChomuon(false);
doc.setGia(txtGia.Text.ToString().Trim());
doc.setISBN(txtISBN.Text.ToString().Trim());
doc.setKhosach(txtKHosach.Text.ToString().Trim());
doc.setMann(cbMangonngu.Text.ToString().Trim());
doc.setManxb(cbManxb.Text.ToString().Trim());
doc.setMatl(cbMatheloai.Text.ToString().Trim());
doc.setNoidung(txtNoidung.Text.ToString());
doc.setSlxb(txtLXB.Text.ToString().Trim());
doc.setSotrang(txtLXB.Text.ToString().Trim());
doc.setTensach(txtTensach.Text.ToString().Trim());
doc.setTgxb(dtbNgayxb.Text.ToString());
doc.setTinhtrang(true);
doc.setMangantu(cbMangantu.Text.ToString().Trim());
doc.setMasach(txtMasach.Text.ToString().Trim());
SqlCommand cmd = new SqlCommand();
if (rdSach.Checked == true)
{
cmd = new SqlCommand("checkdoc", cnn, trans);
}
else if (rdSachdt.Checked == true)
{
cmd = new SqlCommand("checkedoc", cnn, trans);
}
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue(@"ISBN", doc.getISBN());
cmd.Parameters.AddWithValue(@"masach", doc.getMasach());
SqlParameter paramReturnValue = new SqlParameter();
paramReturnValue = cmd.Parameters.Add("RETURN_VALUE", SqlDbType.Int);
paramReturnValue.Direction = ParameterDirection.ReturnValue;
try
{
cmd.ExecuteNonQuery();
}
catch (Exception mess)
{
MessageBox.Show(mess.Message);
cnn.Close();
}
if ((int)cmd.Parameters["RETURN_VALUE"].Value == 1)
{
MessageBox.Show(" ISBN EXISTED ! ");
cnn.Close();
}
else if ((int)cmd.Parameters["RETURN_VALUE"].Value == 0)
{
cmd.Parameters.AddWithValue(@"TENSACH", doc.getTensach());
cmd.Parameters.AddWithValue(@"KHOSACH", doc.getKhosach());
cmd.Parameters.AddWithValue(@"NOIDUNG", doc.getNoidung());
cmd.Parameters.AddWithValue(@"HINHANHPATH", doc.getHinhanh());
cmd.Parameters.AddWithValue(@"NGAYXUATBAN", DateTime.Parse(doc.getTgxb()));
cmd.Parameters.AddWithValue(@"LANXUATBAN", int.Parse(doc.getSlxb()));
cmd.Parameters.AddWithValue(@"SOTRANG", int.Parse(doc.getSotrang()));
cmd.Parameters.AddWithValue(@"GIA", Int64.Parse(doc.getGia()));
cmd.Parameters.AddWithValue(@"MANXB", int.Parse(doc.getManxb()));
cmd.Parameters.AddWithValue(@"MANGONNGU", int.Parse(doc.getMann()));
cmd.Parameters.AddWithValue(@"MATL", doc.getMatl());
cmd.Parameters.AddWithValue(@"TINHTRANG", doc.getTinhtrang());
cmd.Parameters.AddWithValue(@"CHOMUON", doc.getChomuon());
cmd.Parameters.AddWithValue(@"MANGANTU", int.Parse(doc.getMangantu()));
if (rdSach.Checked == true)
cmd.CommandText = "insert";
else if (rdSachdt.Checked == true)
{
cmd.CommandText = "insertedoc";
cmd.Parameters.AddWithValue(@"filesach", doc.getFilesach());
cmd.Parameters.AddWithValue(@"sldown", Int64.Parse(doc.getSolandown()));
cmd.Parameters.AddWithValue(@"down", doc.getChophepdown());
}
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("success");
cnn.Close();
}
catch (Exception mess)
{
MessageBox.Show(mess.Message);
trans.Rollback();
cnn.Close();
}
}
我在 SQL Server 中的存储过程:
ALTER proc [dbo].[checkdoc] (@ISBN varchar(10), @Masach varchar(10))
as
IF Exists(select * from SACH where ISBN = @ISBN or MASACH=@Masach)
return 1
ELSE
return 0
ALTER proc [dbo].[insertdoc](
@ISBN char(10),
@TENSACH varchar(100),
@KHOSACH varchar(5),
@NOIDUNG varchar(300),
@HINHANHPATH varchar(50),
@NGAYXUATBAN smalldatetime,
@LANXUATBAN int,
@SOTRANG int,
@GIA bigint,
@MANXB int,
@MANGONNGU int,
@MATL char(5),
@MASACH varchar(10),
@TINHTRANG bit,
@CHOMUON bit,
@MANGANTU int
)
as
insert into ISBN values(
@ISBN,
@TENSACH,
@KHOSACH,
@NOIDUNG,
@HINHANHPATH,
@NGAYXUATBAN,
@LANXUATBAN,
@SOTRANG,
@GIA,
@MANXB,
@MANGONNGU,
@MATL
)
insert into SACH values(@ISBN, @MASACH, @TINHTRANG, @CHOMUON, @MANGANTU)
调试时一切正常。在我收到消息成功后,然后检查 SQL Server,没有行受到影响。我确实刷新了表,我的存储过程在 SQL Server 中工作,但是当我在 asp.net 中调用它时,它不起作用。任何帮助都会很棒。
最佳答案
我不太熟悉 C# 和 Sql 集成,但我很确定您在最后一个 try-catch block 中遗漏了事务提交:
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("success");
cnn.Close();
}
catch (Exception mess)
{
MessageBox.Show(mess.Message);
trans.Rollback();
cnn.Close();
}
应该是这样的:
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("success");
trans.Commit();
cnn.Close();
}
catch (Exception mess)
{
MessageBox.Show(mess.Message);
trans.Rollback();
cnn.Close();
}
在关闭连接之前注意“trans.Commit()”。
关于c# - ExecuteNonQuery 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16643263/
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。
我在 asp.net mvc 中有一个 webapp,带有一个通过 ODBC 驱动程序链接的 mysql 数据库。 在旧环境中一切都运行良好,但现在我必须转移到新服务器(新操作系统、新 IIS、新 m
我不是一个很好的程序员,但我认为代码是正确的。任何人都可以检查它是否有错误,因为我总是在 executenonquery 行出错。 错误是: {"Incorrect syntax near '9'."
我正在尝试编写一个通用的保存函数,并且我正在使用 Dbcommand。我的代码是: private static int Save(CommandType commandtype, string co
您好,我正在尝试使用 ADO.NET 将数据插入数据库。这是我的代码。这是我的 C# 代码: public void CreateBook(FormCollection collection)
我有以下代码,它没有更新数据库。该代码正在执行它应该执行的操作,但是当我执行 ExecuteNonQuery() 时,它不会将任何内容保存回数据库。连接字符串没有问题,因为它与正在运行的选择查询相同。
我正在使用 ExecuteNonQuery 在数据库中插入一条记录并返回新记录的 ID。它插入正常,但输出参数未更新。 尝试在 SSMS 中执行存储过程并且运行良好。只有在使用 ExecuteNonQ
我认为连接没有问题,因为当我打开它时,它不会抛出任何错误。所以我猜错误是在我执行命令时出现的。这是我的代码: OleDbCommand cmd = new OleDbCommand("SELECT *
我正在使用 OracleCommand.ExecuteNonQuery() 插入到表中。一切正常,但偶尔没有插入记录。那么 ExecuteNonQuery() 是否有可能不插入记录也不抛出异常? 我没
我有最简单的代码... // Connect to database etc string sqlStr = "INSERT INTO .... ... "; MySqlCom.CommandText
我想检查数据库中的所有表并删除具有特定 id 的所有行。当行数较小时,效果很好。 在特定表中,行数为 900000,这不再起作用。 这是我当前的代码: Using connection = New M
这是我的代码: Document doc = new Document(); SqlConnection cnn = Ketnoi.GetSqlConnection(); cnn.Open(); Sq
我有这段代码,运行时给出此错误ExecuteNonQuery:Connection属性尚未初始化。 而且我有sql数据库。 它的名字叫Cost。 我有这段代码,运行时给出此错误ExecuteNonQu
我的sql server 2008数据库中有一个表 COMMENT(idcom,content,username); 该表有2条记录,其中username = lecturer 现在,我要删除所有具有
这是我的代码: private void loadlist() { comboBox1.Items.Clear(); cn.Open(); cmd.Co
我的代码在下面的 ExecuteNonQuery 行超时。我不知道为什么。我已将超时时间增加到 900,但它仍然超时。 using (var conn = new SqlConnection(loca
我正在使用 Microsoft Data-Tier Application framework基于 DacPackage 创建部署脚本目的。我正在尝试使用 Microsoft.SqlServer.Ma
我正在使用基于 WinForms 的 C# 工具,它有一个附加的基于 MDF 文件的数据库。我正在尝试使用 SqlCommand.ExecuteNonQuery() 方法将记录保存到这个附加的 MDF
我存储的过程如下: ALTER PROC pr_Update_Users_Nomination ( @UserID AS VARCHAR(100), @Nominated A
我正在尝试在 C# 中的循环内插入一条数据库记录。 当我像这样对值进行硬编码时它会起作用: string query3 = "INSERT INTO furniture (room_id,me
我是一名优秀的程序员,十分优秀!