我创建了一个记录家庭成员名单的程序。
这些记录是用索引卡写的。
在索引卡上。它包含祖先及其亲属。
我有两张table
表1
有关祖先的信息,如名称、id(自动递增)、文件名、用户名(电脑中的那个)
表2
有关亲属的信息,如姓名、祖先身份证(来自表1)
有20个人在使用这个程序。所以在插入亲戚之前,我需要得到插入祖先时生成的id。
有时索引中有10个亲戚。有时有20个
这是我的存储过程
INSERT INTO tbl_ancestor(an,`as`, dd, cn, su, mm, stn, re, yy, st, filename, username, `zipName`, `batchName`, `folderName`, `remark`)
VALUES(_an, _as, _dd, _cn, _su, _mm, _stn, _re, _yy, _st, _fname, _username, _zipName, _batchName, _folderName, _remark);
SELECT ID, filename, username, zipName, batchName, foldername FROM tbl_ancestor;
但是当数据库中的记录 10000
它等待5秒钟,等待消息提示数据已保存。
我只使用select语句。因为我想如果我使用一个 linq
在我的c#代码中获取祖先的id以供亲属使用。但速度是一样的。
这是我的查询中的错误吗?
或者在我的密码里?
foreach (var item in tag.RelativeList)
{
using (MySqlCommand cmd = new MySqlCommand("sp_insert_relative", conn)
{
CommandType = System.Data.CommandType.StoredProcedure
})
{
if (conn.State == System.Data.ConnectionState.Closed)
conn.Open();
cmd.Parameters.AddWithValue("_ancestor_id", id);
cmd.Parameters.AddWithValue("_rgn", item.RGN);
cmd.Parameters.AddWithValue("_rsn", item.RSN);
cmd.Parameters.AddWithValue("_sgn", item.SGN);
cmd.Parameters.AddWithValue("_ssn", item.SN);
cmd.Parameters.AddWithValue("_username", tag.Username);
cmd.Parameters.AddWithValue("_fname", System.IO.Path.GetFileName(tag.FileName));
cmd.ExecuteNonQuery();
}
}
有什么办法解决这个问题吗?让我的程序更快?我想不出解决的办法。我也一直在找。但我找不到具体的解决办法。或者我用错了搜索关键字?
1条答案
按热度按时间eqqqjvef1#
可以使用mysqltransaction将数据插入或更新到数据库中。