C# 在插入期间递增整数
我试图在插入过程中从c#.net页面增加MS Access表中的整数 我在尝试以下操作时遇到语法错误。还不确定我是否应该使用C# 在插入期间递增整数,c#,.net,oledbconnection,C#,.net,Oledbconnection,我试图在插入过程中从c#.net页面增加MS Access表中的整数 我在尝试以下操作时遇到语法错误。还不确定我是否应该使用ExecuteNonQuery() OleDbCommand cmd = new OleDbCommand("INSERT INTO tblTarget(target,ref) VALUES(@target,(SELECT MAX(ref)+1 FROM tblTarget)", conn); cmd.Parameters.AddWithValue("@target",
ExecuteNonQuery()
OleDbCommand cmd = new OleDbCommand("INSERT INTO tblTarget(target,ref) VALUES(@target,(SELECT MAX(ref)+1 FROM tblTarget)", conn);
cmd.Parameters.AddWithValue("@target", TextTitle.Text);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
您缺少
tblTarget
后面的括号:
OleDbCommand cmd =
new OleDbCommand("INSERT INTO tblTarget(target,ref) VALUES(@target,(SELECT MAX(ref)+1 FROM tblTarget))", conn);
下面是对代码的一点回顾,请尝试使用以下模式:
您缺少一个括号,请尝试:
INSERT INTO tblTarget(target,ref) VALUES(@target,(SELECT MAX(ref)+1 FROM tblTarget))
但我认为你会有其他问题,你需要更接近这一点:
INSERT INTO tblTarget ( target, ref )
SELECT @target AS Targ, First((SELECT MAX(ref)+1 FROM tblTarget)) AS MaxRef
FROM tblTarget
GROUP BY @target;
我不会使用sql或代码进行增量,我们可以使用
AutoNumber
数据类型自动增加access中的值
string sql = "INSERT INTO tblTarget(target) VALUES(@target)";
using(var conn = new Connection())
using(OleDbCommand cmd = new OleDbCommand(sql, conn))
{
conn.Open();
cmd.Parameters.AddWithValue("@target", TextTitle.Text);
cmd.ExecuteNonQuery();
}
实现目标的正确方法是
string sql = "INSERT INTO tblTarget (target,ref) " +
"SELECT ?, MAX(ref)+1 FROM tblTarget";
OleDbCommand cmd = new OleDbCommand(sql, conn);
cmd.Parameters.AddWithValue("@target", TextTitle.Text);
cmd.ExecuteNonQuery();
您得到的错误是什么?ExecuteOnQuery很好,但是,恕我直言,没有办法说服Access认识到syntaxDo表中存在任何行?所以当你选择(MAX)时,它不会返回null?啊,是的,刚刚发现了。现在获取System.Data.OleDb.OLEDBEException:未指定错误但每个表只能有一个错误
string sql = "INSERT INTO tblTarget (target,ref) " +
"SELECT ?, MAX(ref)+1 FROM tblTarget";
OleDbCommand cmd = new OleDbCommand(sql, conn);
cmd.Parameters.AddWithValue("@target", TextTitle.Text);
cmd.ExecuteNonQuery();