我现在在oracle数据库中创建了一个序列为了给custom_id字段设置成自动增长列:
create sequence for_text
increment by 1
start with 1
nomaxvalue
nocache然后在C#程序里面 我怎么来调用这个for_text序列呢??我要让custom_id这个字段成为自动增长列啊。
我在C#程序里面是要做一个insert操作的,往oracle表里面插入数据,就这个custom_id字段不知道插入数据的时候写什么好了。。
请大哥们来帮忙啊!!!谢谢了啊!!!!
create sequence for_text
increment by 1
start with 1
nomaxvalue
nocache然后在C#程序里面 我怎么来调用这个for_text序列呢??我要让custom_id这个字段成为自动增长列啊。
我在C#程序里面是要做一个insert操作的,往oracle表里面插入数据,就这个custom_id字段不知道插入数据的时候写什么好了。。
请大哥们来帮忙啊!!!谢谢了啊!!!!
解决方案 »
- 请问大家如何获取系统当前主题名称???????????
- C#中怎么让checklistbox中的项为选中状态
- 在extendedwebbrowser中如何关闭打印对话框并关闭窗体?
- 谁有C#的发送MSN消息的程序?要Web的,类似php msn class, pymsn等,使用http协议
- 多线程套接字程序的关闭问题,在线急等,高分
- MouseLeave应用
- 关于数据的表示,怎么做好呢?
- 在ORACLE数据库中,怎样得到前n条记录啊?请教各位大侠!
- 循环遍历文件夹分级目录 插入数据库
- 请问报表打印问题,急!!!回者都有分
- vb.net代码翻译成c#
- C# SerialPort 类收发短信的实例
-----------------------------使用序列-------------------
insert into Text_Table
values(for_test.nextval,'序列测试','这是一个序列使用的例子')就是这个for_text.nextval , 这个就是,这个就是我那个custom_id字段。所以在C#程序里面的时候 我就不知道怎么写这个值了。
create sequence s_country_id increment by 1 start with 1 maxvalue 999999999;
触发器//SCOTT.STATICSTOPINFO为表名,SCOTT.trigger_stopinfo为触发器名,pid 为自增列的名,其他照打就可以了
CREATE OR REPLACE TRIGGER SCOTT.trigger_stopinfo
before insert ON SCOTT.STATICSTOPINFO
for each row
declare
nextid number;
begin select S_COUNTRY_ID.nextval
into nextid
from sys.dual;
:new.pid:=nextid;
end tri_test_id;
pid为varchar2(64)就应该够了创建好触发器,在insert数据的时候,values第一列要用default,后边的列正常,一定要有default切记!insert into 表 values (defautl,'','')
create table PPMS_Test(
SID number,
SName nvarchar2(20),
Phone nvarchar2(15)
);select * from ppms_test;
public void Insert()
{
string strSql = "insert into ppms_test values(for_test.nextval,:SName,:Phone)";
OracleParameter[] parameters = { new OracleParameter(":SName",OracleType.NVarChar),
new OracleParameter(":Phone",OracleType.NVarChar)};
parameters[0].Value = "cui";
parameters[1].Value = "12321321";
OracleHelper.ExecuteNonQuery(OracleHelper.ConnectionString,CommandType.Text,strSql,parameters);
}可以插入记录
是每一次插入 第一列都是default,他就自增了。你写在一个方法里边没有问题的
Oracle 11g 学习笔记 (3)
http://www.cnblogs.com/WizardWu/archive/2008/11/28/1343100.html(七) Oracle 的 Sequence,等同其它数据库的 IdentityOracle 不支持 SQL Server 和 Sybase 都支持的 Identity 自动增号字段,也不支持 INSERT INTO 以后立即取得最新一笔记录 Identity 号码的「SELECT @@identity;」语法,
要达成上述功能,必须改用 Sequence (流水号)。Sequence 不包含在 table 中,某一个 Sequence 亦不和 table 做一对一的对应。要用 Sequence,必须先自己手动建立,语法为:
CREATE SEQUENCE seq_name;
或
CREATE SEQUENCE seq_name
INCREASE BY 1
START WITH 1
MAXVALUE 9999
NOCACHE
NOCYCLE;若不下参数,预设从 1 开始,每次增号 1,最大值为 10 的 27 次方,存储值达到 MAXVALUE 不会自动重新编号 (若对应至 table 的 Primary Key,此值应采默认值 NOCYCLE);
CACHE 选项的默认值,会在 memory 产生 20 笔数据。执行以下语句,可看到所有 Sequence 的设定及存储内容。其中的 LAST_NAME 为其下一个将要产生的值。
select * from user_sequences;
要看某一个 Sequence 的当前值、下一个值,可用如下语句:
select table1_seq.CURRVAL from dual;
select table1_se1.NEXTVAL from dual;
需注意第二个语句 NEXTVAL 只要一被执行到,该个 Sequence 的内部编号,就会自动增加一个号码,而不仅只是 select 撷取而已。
若要搭配 Sequence,新增一笔记录到 table,可用如下语法:
INSERT INTO table1 (id, name) VALUES (table1_seq.NEXTVAL, 'name1');
在 Oracle 10g 以前的版本,或您用的是 OleDb 联机方式 (OracleClient 亦可),当您想在 INSERT INTO 记录时,Primary Key 希望能写入 Sequence 的值,可用如下写法 (亦
可在新增完成后,立即传回该笔记录最新的 Sequence 值):using System.Data.OleDb;
OleDbConnection odConn = null;
OleDbCommand odCmd = null;
Int64 intDATA_ID_AfterInserted = 0;
string strSql = "BEGIN SELECT table1_seq.NEXTVAL INTO :id FROM dual; INSERT INTO table1(id, name) VALUES(:id, :name); END;";...中间略...OleDbParameter p;
p = odCmd.Parameters.Add(":id", OleDbType.Double, 7);
p.Direction = ParameterDirection.Output;
odCmd.Parameters.Add(":name", OleDbType.VarWChar, 30).Value = TextBox1.Text;odCmd.ExecuteNonQuery();
intDATA_ID_AfterInserted = Convert.ToInt64(p.Value); // 立即传回该笔记录最新的 Sequence 值
若您用的是 Oracle 10g 及以后的版本,且用的是 OracleClient Data Provider,则可用以下的「RETURNING INTO」更简洁写法。但须注意,OleDb 联机方式若用此种写法,在写
入时并不会造成 error 或引发 exception,但写入值会不正常。string strSql = "INSERT INTO table1(id, name) VALUES(table1_seq.NEXTVAL, :name) RETURNING id INTO :id";
---------------------------------------------
本帖第 (七) 点的 ASP.NET 2.0 + Oracle 11g 示例下载点 (批次新增 + 新增后马上取得最新 Sequence 值):
http://files.cnblogs.com/WizardWu/081128.zip