念插入记录返回自动生成的编号,语句无效
想插入记录返回自动生成的编号,语句无效目的:新建一个试卷,插入试卷名称,试卷ID为自动生成,返回试卷ID,代
想插入记录返回自动生成的编号,语句无效 目的:新建一个试卷,插入试卷名称,试卷ID为自动生成,返回试卷ID,代码如下,问题是没有插入记录,也没有报错,请大家看看:
string SavePaper() { string sQUES_ID = ""; connection.Open(); sSql = "insert into t_Paper where values('" + txtPaperName.Text.Trim() + "');" + "select @@identity as paper_id"; SqlCommand cmd = new SqlCommand(sSql, connection); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) sQUES_ID = dr["paper_id"].ToString(); connection.Close(); return sQUES_ID; } [解决办法] 引用: 目的:新建一个试卷,插入试卷名称,试卷ID为自动生成,返回试卷ID,代码如下,问题是没有插入记录,也没有报错,请大家看看: string SavePaper() { string sQUES_ID = ""; connection.Open(); sSql = "insert into t_Paper where values('" + txtPaperName.Text.Trim() + "');" + "select @@identity as paper_id"; SqlCommand cmd = new SqlCommand(sSql, connection); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) sQUES_ID = dr["paper_id"].ToString(); connection.Close(); return sQUES_ID; }
string SavePaper() { string sQUES_ID = ""; connection.Open(); sSql = "insert into t_Paper where values('" + txtPaperName.Text.Trim() + "');" + "select @@identity as paper_id"; SqlCommand cmd = new SqlCommand(sSql, connection); object obj = cmd.ExecuteScalar(); sQUES_ID = obj.ToString(); connection.Close(); return sQUES_ID; } [解决办法] @@identity 默认是ID 列 你插String 肯定没有INSERT
执行是可以的
[解决办法] 引用: Quote: 引用: 目的:新建一个试卷,插入试卷名称,试卷ID为自动生成,返回试卷ID,代码如下,问题是没有插入记录,也没有报错,请大家看看: string SavePaper() { string sQUES_ID = ""; connection.Open(); sSql = "insert into t_Paper where values('" + txtPaperName.Text.Trim() + "');" + "select @@identity as paper_id"; SqlCommand cmd = new SqlCommand(sSql, connection); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) sQUES_ID = dr["paper_id"].ToString(); connection.Close(); return sQUES_ID; }
string SavePaper() { string sQUES_ID = ""; connection.Open(); sSql = "insert into t_Paper where values('" + txtPaperName.Text.Trim() + "');" + "select @@identity as paper_id"; SqlCommand cmd = new SqlCommand(sSql, connection); object obj = cmd.ExecuteScalar(); sQUES_ID = obj.ToString(); connection.Close(); return sQUES_ID; } 上面的where去掉 我是用你之前写的语句的
[解决办法] 引用: @@identity 默认是ID 列 你插String 肯定没有INSERT 执行是可以的 sSql = "insert into t_Paper values('" + txtPaperName.Text.Trim() + "');" + "select @@identity as paper_id"; try
[解决办法] 不需要列名为id
@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 是相似的函数,因为他们都返回插入到表的 IDENTITY 列的最后一个值。即自增长列的最后的值.
[解决办法] 引用: Quote: 引用: Quote: 引用: @@identity 默认是ID 列 你插String 肯定没有INSERT 执行是可以的sSql = "insert into t_Paper values('" + txtPaperName.Text.Trim() + "');" + "select @@identity as paper_id";
try 这个,和我原先的代码是一样的呀,,,感觉没执行insert语句,是不是insert不能用ExecuteReader()?我上面不是给你一个方法了么 你试了么?
[解决办法] 引用: Quote: 引用: Quote: 引用: Quote: 引用: Quote: 引用: @@identity 默认是ID 列 你插String 肯定没有INSERT 执行是可以的sSql = "insert into t_Paper values('" + txtPaperName.Text.Trim() + "');" + "select @@identity as paper_id"; try 这个,和我原先的代码是一样的呀,,,感觉没执行insert语句,是不是insert不能用ExecuteReader()? 我上面不是给你一个方法了么 你试了么? 试了,没有插进去这个表就两个字段了
[解决办法] 用ExecuteScalar()返回的值就是该记录的id了
[解决办法] 你把语句提取出来放到 SQL里执行一次就知道问题在哪了。
[解决办法] 好怪的写法, int id = DBHelper.GetScalar(sql).ToString(); 这样不就返回了。
public static int GetScalar(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
int result = Convert.ToInt32(cmd.ExecuteScalar());
connection.Close();
return result;
}