如何从Android客户端自动增加存储在Firebase中的值?
目前:我宣布int id = 1.当我递增时,我看到存储的值2,3等.那没关系,但是当我重新运行项目时,id再次设置为1.
我希望它表现得像一个静态变量,所以我可以创建一个从1到无穷大而不重置的id.
更新失败
我使用以下内容将Firebase引用和字符串传递给函数incrementCounter.
if(language_chosen.equalsIgnoreCase("english"))
{
Firebase publRef = f.child("Language").child("English").child("Message");
Firebase newPublRef = publRef.push();
writeMsgActivity demo = new writeMsgActivity();
demo.incrementCounter(newPublRef,the_msg_enter);
}
Run Code Online (Sandbox Code Playgroud)
现在我尝试public void incrementCounter(Firebase publref,String my_msg)在oncomplete方法中使用传递的引用和字符串, 但它给了我一个错误.
public void incrementCounter(Firebase publref,String my_msg) {
publref.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(final MutableData currentData) {
if (currentData.getValue() == null) {
currentData.setValue(1);
} else {
currentData.setValue((Long) currentData.getValue() + 1);
}
return Transaction.success(currentData);
}
public void onComplete(FirebaseError firebaseError, boolean committed, DataSnapshot currentData) {
if …Run Code Online (Sandbox Code Playgroud) java android auto-increment firebase firebase-realtime-database
我想在SqlServer中创建一个表,它将在插入时添加一个自动递增的主键.这应该是一个类似于MySql auto_increment功能的自动增量id.(下面)
create table foo
(
user_id int not null auto_increment,
name varchar(50)
)
Run Code Online (Sandbox Code Playgroud)
有没有办法在创建插入触发器的情况下执行此操作?
我正在插入带有自动增量键字段的SQLServer表.(我相信这在SQLServer中称为IDENTITY列.)
在Oracle中,我可以使用RETURNING关键字为我的INSERT语句提供一个结果集,就像SELECT查询一样,它将返回生成的值:
INSERT INTO table
(foreign_key1, value)
VALUES
(9, 'text')
RETURNING key_field INTO :var;
Run Code Online (Sandbox Code Playgroud)
如何在SQLServer中完成此操作?
额外奖励:好的,到目前为止答案很好,但如果可能的话,如何将其写入单一陈述?:)
一位同事问我,如果SQL Server中有一个只有自动增量列的表,那么如何在该表中插入一个新行?
INSERT INTO MyTable() VALUES()
Run Code Online (Sandbox Code Playgroud)
......不起作用.
至于为什么......我不太确定.但我发现这个问题很有说服力.
如何设置不自动增量键字段自动增量MySQL或如何设置与mysql的初始值6000的字段自动递增?
我有一个图片库,网站成员可以上传图像.上传图像时,会写入一个MySQL行,其中包含有关图像,成员等的各种信息.此行使用AUTO_INCREMENT创建其ID,以便getimage.php?id=XX可以获取要显示的图像.
我使用for循环遍历ID以显示库中的图像.
如果我删除第5行/图像,例如,AUTO_INCREMENT从去123456789到12346789.
我想从头开始重新为MySQL表中的每一行分配ID.所以12346789变为12345678.我将如何实现这一目标?
根据下面的代码,我收到以下消息.我很确定"为什么"我得到它,我只是不知道如何重新排列代码来移动/删除/替换其中一个错误导致语句.
"使用/ main编译以指定包含入口点的类型."
在"static void Main(string [] args)"下面有一堆代码,我从 http://support.microsoft.com/kb/816112 得到的目的是为了从自动增量获取ID,所以当其余代码填充Access数据库时,我可以自动增加它.任何帮助表示赞赏.我们也欢迎使用更简单的代码获得结果的建议!
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
OleDbConnection vcon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;data source=C:\Hazardous Materials\KinneyDatabase.accdb");
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
vcon.Open();
try
{
StreamReader sr = new StreamReader(@"C:\Hazardous Materials\cities.txt");
string line = sr.ReadLine();
StreamReader sr2 = new StreamReader(@"C:\Hazardous Materials\drugs.txt");
string line2 = sr2.ReadLine();
StreamReader sr3 = new StreamReader(@"C:\Hazardous Materials\strengths.txt");
string line3 = sr3.ReadLine();
while (line != null)
{
comboBox1.Items.Add(line); …Run Code Online (Sandbox Code Playgroud) 我有一个带有SERIAL主键的表,还有一个ltree列,其值我想成为这些主键的串联.例如
id | path
----------
1 1
2 1.2
3 1.2.3
4 1.4
5 1.5
Run Code Online (Sandbox Code Playgroud)
我很好奇是否有办法在一个查询中进行这样的插入,例如
INSERT INTO foo (id, ltree) VALUES (DEFAULT, THIS.id::text)
Run Code Online (Sandbox Code Playgroud)
我可能在这里过度使用并试图在一个查询中做我应该做的两件事(在一个事务中分组).
我已经看过其他答案了,我仍然认为我的问题是相关的,值得一个单独的条目.
我有一个名为settings的表(存储用户设置),我必须为每个用户插入多个设置.最初,我为每个设置执行了一个单独的insert语句,但是觉得这不是一个特别好的方法,我想通过相同的insert语句插入多行.我唯一的问题是我想要每个新插入行的auto_incremented ID.
我已经阅读了答案,说这不可能/可扩展等,但我觉得我已经找到了解决方案.我想要反馈我的方式是否正确,因此这个问题.
我所做的很简单.插入多行后,我调用last_insert_id()来获取同时插入的行的第一行的ID.我已经计算了插入的行数,所以我只需要创建一个新数组并使用从last_insert_id()开始并以last_insert_id()+ n-1结尾的ID填充它(其中n是插入的行数).
我觉得这会有效,原因如下:
1.)MYSQL文档声明last_insert_id()依赖于连接,如果另一个客户端/连接插入新记录,那么这不会影响其他客户端的last_insert_id().
2.)我觉得由于插入是由单个SQL语句完成的,因此应将整个插入视为单个事务.如果这是真的,那么应该应用ACID规则并且auto_incremented值应该是顺序的.我不确定这个.
这些是我认为逻辑应该起作用的原因.所以我的问题是,上述逻辑是否适用于所有条件?我可以依靠它在所有情况下都能正常工作吗?我知道它目前对我有用.
代码很简单.
Tag.cs实体:
public partial class Tag
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
HomeController.cs 类:
public async Task<IActionResult> Index()
{
tagRepository.Insert(new Tag
{
Name = "name",
Description = "description"
});
await UnitOfWork.SaveChangesAsync(); // calls dbContext.SaveChangesAsync()
return View();
}
Run Code Online (Sandbox Code Playgroud)
TagRepository.cs 类:
// Context it's a usual DBContext injected via Repository's constructor
public virtual void Insert(TEntity item)
=> Context.Entry(item).State = EntityState.Added;
Run Code Online (Sandbox Code Playgroud)
Tag 表是通过运行创建的: …
auto-increment ×10
mysql ×4
sql-server ×3
php ×2
sql ×2
android ×1
asp.net-core ×1
c# ×1
database ×1
firebase ×1
identity ×1
insert ×1
java ×1
ms-access ×1
npgsql ×1
postgresql ×1
sql-insert ×1
t-sql ×1