none
数据库表中“自动编号”类型的号码,怎么提取 RRS feed

  • 问题

  • 我有一个通讯录ACCESS数据库,其中ID的数据类型“自动编号”。输入完成后,我怎么才能定位记录,确定我所需记录的ID编号。

    数据库表的结构如下:

    字段,数据类型

    ID,自动编号

    name,字符

    Company,字符

    输入时,只要输入name和Company就可以了,系统会自动ID号。

    这时我要提取ID,不知怎么才能做到?!

    我已经写好的代码如下:

                string strConn = "Provider=Microsoft.Jet.OleDb.4.0;";
                strConn += @"Data source=C:\ChhAtWin\web\AddressBook\AddressBook\App_Data\AddressBookDB.mdb";  //连接数据库字符串

                string strSqlIns = "INSERT INTO Name(FirstName,LastName,Sex,Company) VALUES('";
                strSqlIns += ttbFirstName.Text + "','" + ttbLastName.Text + "'," + varSex + ",'" + ttbCompany.Text + "')";  //操作表字符串


                OleDbConnection connDbab = new OleDbConnection(strConn);  //连接数据库
                OleDbCommand commDbabIns = new OleDbCommand(strSqlIns, connDbab);
                connDbab.Open();
                commDbabIns.ExecuteNonQuery();
               
                Response.Write("<script language=javascript>alert('新添了一位客户信息!');</script>");
                ttbCompany.Text = ""; ttbFirstName.Text = ""; ttbLastName.Text = "";  //将文本框重置为空

                //提取ID号的代码,如何写?

                connDbab.Close();

    2011年7月16日 12:19

答案

  • Hi:

    试试这样:

     string strConn = "Provider=Microsoft.Jet.OleDb.4.0;";
       strConn += @"Data source=C:\ChhAtWin\web\AddressBook\AddressBook\App_Data\AddressBookDB.mdb"; //连接数据库字符串
      string strSqlIns = "INSERT INTO Name(FirstName,LastName,Sex,Company) VALUES('";
      strSqlIns += ttbFirstName.Text + "','" + ttbLastName.Text + "'," + varSex + ",'" + ttbCompany.Text + "')"; //操作表字符串
    
    
    
      OleDbConnection connDbab = new OleDbConnection(strConn); //连接数据库
      OleDbCommand commDbabIns = new OleDbCommand(strSqlIns, connDbab);
    connDbab.Open(); commDbabIns.ExecuteNonQuery(); commDbabIns.CommandText="Select @@Identity"; object obj = commDbabIns.ExecuteScalar();//提取ID号的代码 Response.Write("<script language=javascript>alert('新添了一位客户信息!');</script>"); ttbCompany.Text = ""; ttbFirstName.Text = ""; ttbLastName.Text = ""; //将文本框重置为空 connDbab.Close();

     

    详细参考:http://hi.baidu.com/jiljil/blog/item/05442573d9d3dc108701b0d9.html
    Shadowと愉快なコード達
    Please correct me if my concept is wrong

    2011年7月16日 16:06

全部回复

  • Hi:

    试试这样:

     string strConn = "Provider=Microsoft.Jet.OleDb.4.0;";
       strConn += @"Data source=C:\ChhAtWin\web\AddressBook\AddressBook\App_Data\AddressBookDB.mdb"; //连接数据库字符串
      string strSqlIns = "INSERT INTO Name(FirstName,LastName,Sex,Company) VALUES('";
      strSqlIns += ttbFirstName.Text + "','" + ttbLastName.Text + "'," + varSex + ",'" + ttbCompany.Text + "')"; //操作表字符串
    
    
    
      OleDbConnection connDbab = new OleDbConnection(strConn); //连接数据库
      OleDbCommand commDbabIns = new OleDbCommand(strSqlIns, connDbab);
    connDbab.Open(); commDbabIns.ExecuteNonQuery(); commDbabIns.CommandText="Select @@Identity"; object obj = commDbabIns.ExecuteScalar();//提取ID号的代码 Response.Write("<script language=javascript>alert('新添了一位客户信息!');</script>"); ttbCompany.Text = ""; ttbFirstName.Text = ""; ttbLastName.Text = ""; //将文本框重置为空 connDbab.Close();

     

    详细参考:http://hi.baidu.com/jiljil/blog/item/05442573d9d3dc108701b0d9.html
    Shadowと愉快なコード達
    Please correct me if my concept is wrong

    2011年7月16日 16:06
  •             程序能运行通过,但你加的几行似乎没有执行

    bool varSex = radlSex.Items[0].Selected;  //获取RadioButtonList选中的项目
                string strConn = "Provider=Microsoft.Jet.OleDb.4.0;";
                strConn += @"Data source=C:\ChhAtWin\web\AddressBook\AddressBook\App_Data\AddressBookDB.mdb";  //连接数据库字符串

                string strSqlIns = "INSERT INTO Name(FirstName,LastName,Sex,Company) VALUES('";
                strSqlIns += ttbFirstName.Text + "','" + ttbLastName.Text + "'," + varSex + ",'" + ttbCompany.Text + "')";  //操作表字符串


                OleDbConnection connDbab = new OleDbConnection(strConn);  //连接数据库
                OleDbCommand commDbabIns = new OleDbCommand(strSqlIns, connDbab);
                connDbab.Open();
                commDbabIns.ExecuteNonQuery();

    //以下三行似乎没有执行

                commDbabIns.CommandText = "Select @@Identity";
                object obj = commDbabIns..ExecuteScalar();//提取ID号的代码。此行有一条错误信息:“应输入标识符”
                Response.Write("<script language=javascript>alert('新客户ID:"+obj.ToString()+"');</script>");
               
                Response.Write("<script language=javascript>alert('新添了一位客户信息!');</script>");
                ttbCompany.Text = ""; ttbFirstName.Text = ""; ttbLastName.Text = "";  //将文本框重置为空

                
                connDbab.Close();

    2011年7月17日 3:16
  •  object obj = commDbabIns..ExecuteScalar();//提取ID号的代码。此行有一条错误信息:“应输入标识符”

     

    会不会是多了一 . 的关系?
    commDbabIns..ExecuteScalar();


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    2011年7月17日 3:47
  • 问题解决,确实是多了一点.太感谢了。

    不过,我还有不明白

    第1句中的@@Identity是什么意思

    第2句中的变量“obj”为什么是object类型的?

    commDbabIns.CommandText="Select @@Identity";

      object obj = commDbabIns.ExecuteScalar();//提取ID号的代码


    2011年7月17日 12:31
  • Hi:

    1. 如果您的数据表中有自动编号栏位,则在新增一笔资料后,执行Select @@Identity,会获得刚刚新增资料自动编号栏位的值
    2. 因为commDbabIns.ExecuteScalar(); 回传Object


    Shadowと愉快なコード達
    Please correct me if my concept is wrong
    2011年7月17日 15:16