Sqlite 自增长id

黄亮 2012-07-23 09:14:59
我这边准备用Sqlite写个小程序,想知道怎样通过Ado.net获取插入新记录的自增长Id。
求高人指点
...全文
549 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chrise_Chen 2013-09-03
  • 打赏
  • 举报
回复
如果将一个字段定义成自增长字段,那么插入SQL是自增长字段就省略不写。 例如表定义: create table user(" + "userid integer primary key Autoincrement," + "username text null," + "password text null," + "lastlogindate text null) 表插入SQL语句: insert into user(username,password,lastlogindate) values ('user','pwd','2010/10/10'); 以上方法已经得到验证。
viviv2012 2012-07-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
select max(rowid) from yourtable

倒序倒序排列id,取第1条
[/Quote]

请问取第一条数据的SQL语句怎么写?
别告诉我用select top 1 * from yourtable 用过了查不到。
黄亮 2012-07-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

SQL code

//插入之后取新ID,中间用分号断句
var sql = "INSERT INTO TableName ...;"
+ "SELECT LAST_INSERT_ROWID() FROM TableName";
[/Quote]

这个行
Change_L 2012-07-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

SQL code

//插入之后取新ID,中间用分号断句
var sql = "INSERT INTO TableName ...;"
+ "SELECT LAST_INSERT_ROWID() FROM TableName";
[/Quote]

++
lizhengdao1314 2012-07-23
  • 打赏
  • 举报
回复
存储过程中return @@identity
qldsrx 2012-07-23
  • 打赏
  • 举报
回复
要并发安全很难,你可以考虑用GUID代替自增长ID,.NET产生的GUID不可能重复。
ParanoidKing 2012-07-23
  • 打赏
  • 举报
回复
首先Sqlite引擎要是Sqlite3,然后Id列类型必须是INTEGER,PRIMARY KEY,然后Autoincrement。这样就可以获取
INSERT INTO ......; SELECT LAST_INSERT_ROWID() AS [NewId];
就类似于SQL Server的SELECT @@IDENTITY
cjh200102 2012-07-23
  • 打赏
  • 举报
回复
那你也可以用uniqueidentifier
  • 打赏
  • 举报
回复

//插入之后取新ID,中间用分号断句
var sql = "INSERT INTO TableName ...;"
+ "SELECT LAST_INSERT_ROWID() FROM TableName";
showwe 2012-07-23
  • 打赏
  • 举报
回复
只是max的话,并发时是否安全?
波仔 2012-07-23
  • 打赏
  • 举报
回复
select max(rowid) from yourtable

这样
晚安苏州 2012-07-23
  • 打赏
  • 举报
回复
我擦SQL上面多了个*

cmd.CommandText = "select max(id) from " + tableName;
晚安苏州 2012-07-23
  • 打赏
  • 举报
回复
参考一下下

private void button1_Click(object sender, EventArgs e)
{
try
{
SQLiteConnection conn = new SQLiteConnection("data Source="+@(c:\test.db));
conn.SetPassword("1234567890");
conn.Open();
SQLiteCommand cmd = conn.CreateCommand();

string tabneName="table";
cmd.CommandText = "select * max(id) from " + tableName;


SQLiteDataReader reader = cmd.ExecuteReader();

if (reader.HasRows)
{
this.label1.Text = "id:" + reader.GetValue(0).ToString();;
reader.Close();
}
}
catch(exception e)
{

}
finally
{
conn.Close();
}

}
ohkuy 2012-07-23
  • 打赏
  • 举报
回复
select max(rowid) from yourtable

倒序倒序排列id,取第1条
bdmh 2012-07-23
  • 打赏
  • 举报
回复
最简单的办法就是select max(id)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧