想插入记录返回自动生成的编号,语句无效

woshizhaoxuhui 2013-07-16 01:47:38
目的:新建一个试卷,插入试卷名称,试卷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;
}
...全文
181 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshizhaoxuhui 2013-07-17
  • 打赏
  • 举报
回复
引用 16 楼 oLeeteuk 的回复:
好怪的写法, 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; }
不知道这种方法啊,上面的都是百度来的,谢谢指教啊
Leeteuk 2013-07-16
  • 打赏
  • 举报
回复
好怪的写法, 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; }
踏平扶桑 2013-07-16
  • 打赏
  • 举报
回复
你把语句提取出来放到 SQL里执行一次就知道问题在哪了。
烧点饭 2013-07-16
  • 打赏
  • 举报
回复
用ExecuteScalar()返回的值就是该记录的id了
woshizhaoxuhui 2013-07-16
  • 打赏
  • 举报
回复
是其他的低级错误,抱歉了!!
  • 打赏
  • 举报
回复
引用 11 楼 woshizhaoxuhui 的回复:
[quote=引用 10 楼 liang_show 的回复:] [quote=引用 9 楼 woshizhaoxuhui 的回复:] [quote=引用 7 楼 dr592112441 的回复:] [quote=引用 4 楼 dr592112441 的回复:] @@identity 默认是ID 列 你插String 肯定没有INSERT 执行是可以的
sSql = "insert into t_Paper values('" + txtPaperName.Text.Trim() + "');"
                   + "select @@identity as paper_id";
try[/quote] 这个,和我原先的代码是一样的呀,,,感觉没执行insert语句,是不是insert不能用ExecuteReader()?[/quote] 我上面不是给你一个方法了么 你试了么?[/quote] 试了,没有插进去[/quote] 这个表就两个字段了
woshizhaoxuhui 2013-07-16
  • 打赏
  • 举报
回复
引用 10 楼 liang_show 的回复:
[quote=引用 9 楼 woshizhaoxuhui 的回复:] [quote=引用 7 楼 dr592112441 的回复:] [quote=引用 4 楼 dr592112441 的回复:] @@identity 默认是ID 列 你插String 肯定没有INSERT 执行是可以的
sSql = "insert into t_Paper values('" + txtPaperName.Text.Trim() + "');"
                   + "select @@identity as paper_id";
try[/quote] 这个,和我原先的代码是一样的呀,,,感觉没执行insert语句,是不是insert不能用ExecuteReader()?[/quote] 我上面不是给你一个方法了么 你试了么?[/quote] 试了,没有插进去
  • 打赏
  • 举报
回复
引用 9 楼 woshizhaoxuhui 的回复:
[quote=引用 7 楼 dr592112441 的回复:] [quote=引用 4 楼 dr592112441 的回复:] @@identity 默认是ID 列 你插String 肯定没有INSERT 执行是可以的
sSql = "insert into t_Paper values('" + txtPaperName.Text.Trim() + "');"
                   + "select @@identity as paper_id";
try[/quote] 这个,和我原先的代码是一样的呀,,,感觉没执行insert语句,是不是insert不能用ExecuteReader()?[/quote] 我上面不是给你一个方法了么 你试了么?
woshizhaoxuhui 2013-07-16
  • 打赏
  • 举报
回复
引用 7 楼 dr592112441 的回复:
[quote=引用 4 楼 dr592112441 的回复:] @@identity 默认是ID 列 你插String 肯定没有INSERT 执行是可以的
sSql = "insert into t_Paper values('" + txtPaperName.Text.Trim() + "');"
                   + "select @@identity as paper_id";
try[/quote] 这个,和我原先的代码是一样的呀,,,感觉没执行insert语句,是不是insert不能用ExecuteReader()?
天下如山 2013-07-16
  • 打赏
  • 举报
回复
不需要列名为id @@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 是相似的函数,因为他们都返回插入到表的 IDENTITY 列的最后一个值。即自增长列的最后的值.
Mirror然 2013-07-16
  • 打赏
  • 举报
回复
引用 4 楼 dr592112441 的回复:
@@identity 默认是ID 列 你插String 肯定没有INSERT 执行是可以的
sSql = "insert into t_Paper values('" + txtPaperName.Text.Trim() + "');"
                   + "select @@identity as paper_id";
try
woshizhaoxuhui 2013-07-16
  • 打赏
  • 举报
回复
引用 4 楼 dr592112441 的回复:
@@identity 默认是ID 列 你插String 肯定没有INSERT 执行是可以的
是不是说如果要返回的话,列名必须是"id"?
  • 打赏
  • 举报
回复
引用 3 楼 liang_show 的回复:
[quote=引用 楼主 woshizhaoxuhui 的回复:] 目的:新建一个试卷,插入试卷名称,试卷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;
        }
[/quote] 上面的where去掉 我是用你之前写的语句的
Mirror然 2013-07-16
  • 打赏
  • 举报
回复
@@identity 默认是ID 列 你插String 肯定没有INSERT 执行是可以的
  • 打赏
  • 举报
回复
引用 楼主 woshizhaoxuhui 的回复:
目的:新建一个试卷,插入试卷名称,试卷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;
        }
woshizhaoxuhui 2013-07-16
  • 打赏
  • 举报
回复
感觉INSERT语句好像没执行就

string SavePaper()
    {
        string sQUES_ID = "";
        connection.Open();
        sSql = "insert into t_Paper 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;
    }
woshizhaoxuhui 2013-07-16
  • 打赏
  • 举报
回复
贴错了

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;
    }

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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