Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取新添加的记录_C#_Asp.net_Mysql_Sql - Fatal编程技术网

C# 如何获取新添加的记录

C# 如何获取新添加的记录,c#,asp.net,mysql,sql,C#,Asp.net,Mysql,Sql,在我的应用程序中,我希望在gridview中通过导入操作显示新添加的记录。sql中是否有任何方法可以检索新添加的行 我试着用代码来做这件事,试着在插入之前和插入之后获得差异,并且它工作得很好,但是这使得应用程序非常慢。所以,我想在数据库本身中进行 我使用Mysql,ASP.NET 例如: 表在导入操作之前可能有这些记录 ID Name 1 A 2 B 3 C 导入后,表可能是这样的 ID Name 1 A 2 B 3 C 4 D 5 E 6 F 我想要这样的结果 ID Na

在我的应用程序中,我希望在gridview中通过导入操作显示新添加的记录。sql中是否有任何方法可以检索新添加的行

我试着用代码来做这件事,试着在插入之前和插入之后获得差异,并且它工作得很好,但是这使得应用程序非常慢。所以,我想在数据库本身中进行

我使用Mysql,ASP.NET

例如: 表在导入操作之前可能有这些记录

ID Name
1  A
2  B
3  C
导入后,表可能是这样的

ID Name
1  A
2  B
3  C
4  D
5  E
6  F
我想要这样的结果

ID Name
4  D
5  E
6  F
您需要在表上定义列,或者您可以使用时间戳字段检索新添加的记录,请尝试以下操作:

SELECT * 
FROM table_name 
ORDER BY id DESC 
LIMIT 10;
对于单行插入,可以在插入查询后使用:

对于多行插入,可以执行以下步骤:

START TRANSACTION;

SELECT MAX(id) INTO @var_max_id FROM table_name;

INSERT INTO table_name VALUES(..),(..),...;

SELECT MAX(id) INTO @var_max_id_new FROM table_name;

COMMIT;

SELECT * 
FROM table_name 
WHERE id BETWEEN (@var_max_id + 1) AND @var_max_id_new;
您需要在表上定义列,或者您可以使用时间戳字段检索新添加的记录,请尝试以下操作:

SELECT * 
FROM table_name 
ORDER BY id DESC 
LIMIT 10;
对于单行插入,可以在插入查询后使用:

对于多行插入,可以执行以下步骤:

START TRANSACTION;

SELECT MAX(id) INTO @var_max_id FROM table_name;

INSERT INTO table_name VALUES(..),(..),...;

SELECT MAX(id) INTO @var_max_id_new FROM table_name;

COMMIT;

SELECT * 
FROM table_name 
WHERE id BETWEEN (@var_max_id + 1) AND @var_max_id_new;

如果您对记录使用自动增量ID,您可以使用:

SELECT * FROM [table] ORDER BY [id column] DESC LIMIT [number of records]
否则,应为此向记录中添加时间戳列,并选择“按此列”


就个人而言,如果有选择的话,我不会为此使用记录ID,因为这不是它们的用途。记录ID可以在应用程序的整个生命周期内更改,它们不一定表示添加项的顺序。尤其是在数据导入/导出场景中。我更喜欢创建特殊列来存储此类信息,例如CreatedAt、ModifiedAt。

如果您对记录使用自动增量ID,您可以使用:

SELECT * FROM [table] ORDER BY [id column] DESC LIMIT [number of records]
否则,应为此向记录中添加时间戳列,并选择“按此列”


就个人而言,如果有选择的话,我不会为此使用记录ID,因为这不是它们的用途。记录ID可以在应用程序的整个生命周期内更改,它们不一定表示添加项的顺序。尤其是在数据导入/导出场景中。我更喜欢创建特殊列来存储此类信息,例如CreatedAt、ModifiedAt。

我认为这将更简单:

SELECT MAX(id) INTO @Max_table_Id FROM table;

// Insert operation here//////

SELECT * FROM table WHERE id>@Max_table_Id;

我认为这将更简单:

SELECT MAX(id) INTO @Max_table_Id FROM table;

// Insert operation here//////

SELECT * FROM table WHERE id>@Max_table_Id;

如果我使用limit,我只能得到10条记录。但我不确定用户在一次导入操作中可以添加多少条记录。如果我使用limit,我只能获得10条记录。但是我不确定用户在一次导入操作中可以添加多少条记录。