用OracleParameter向数据库中插入数据的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 ligang_box
  • 开始时间 开始时间
L

ligang_box

Unregistered / Unconfirmed
GUEST, unregistred user!
OracleConnection testConn=new OracleConnection("User ID=test;Data Source=test;Password=test");
testConn.Open();
OracleTransaction tran=testConn.begin
Transaction();
try
{
OracleCommand cmd1 = new OracleCommand("INSERT INTO TestData(ID,MEMO) VALUES(:ID,:MEMO)",testConn);

cmd1.Transaction=tran;
cmd1.Parameters.Add("ID",OracleType.OracleType.VarChar,20).Value="dfddffddf";
string ok1="DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12";
cmd1.Parameters.Add("MEMO",OracleType.LongVarChar).Value=ok1;
cmd1.ExecuteNonQuery();
tran.Commit();
testConn.Close();
}
catch(System.Data.OracleClient.OracleException t)
{
tran.Rollback();
testConn.Close();
Label1.Text=t.Message;
}
catch(Exception t)
{
tran.Rollback();
testConn.Close();
Label1.Text=t.Message;
}
数据表TESTDATA中只有两个字段,ID和MEMO;ID为VARCHAR2(20),MEMO为LONG型;该表没设任何外键等
问题:1、如果只插入MEMO字段,程序能正常执行,但OK1中的字符保存不全,只有12个字符;2、如果只插入ID字段,程序异常,报的结果是:ORA-12571: TNS:包写入程序失败
 
OracleConnection testConn=new OracleConnection("User ID=test;Data Source=test;Password=test");
testConn.Open();
OracleTransaction tran=testConn.begin
Transaction();
try
{
OracleCommand cmd1 = new OracleCommand("INSERT INTO TestData(ID,MEMO) VALUES(:ID,:MEMO)",testConn);

cmd1.Transaction=tran;
cmd1.Parameters.Add("ID",OracleType.OracleType.VarChar,20).Value="dfddffddf";
string ok1="DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12";
cmd1.Parameters.Add("MEMO",OracleType.LongVarChar).Value=ok1;
cmd1.ExecuteNonQuery();
tran.Commit();
testConn.Close();
}
catch(System.Data.OracleClient.OracleException t)
{
tran.Rollback();
testConn.Close();
Label1.Text=t.Message;
}
catch(Exception t)
{
tran.Rollback();
testConn.Close();
Label1.Text=t.Message;
}
数据表TESTDATA中只有两个字段,ID和MEMO;ID为VARCHAR2(20),MEMO为LONG型;该表没设任何外键等
问题:1、如果只插入MEMO字段,程序能正常执行,但OK1中的字符保存不全,只有12个字符;2、如果只插入ID字段,程序异常,报的结果是:ORA-12571: TNS:包写入程序失败
 
long 类型Oracle已经舍弃了Oracle不推荐使用,替代它的是Clob和Blob,大文本用Clob.
你应该用大字段操作来试试应该不会有问题。一般大字段操作不能直接Insert,而是用EmptyBlob或者干脆插入时不用,然后通过dateset.Edit然后TblobField的函数
 
好,帮顶


--------签名档---------------------------

比肩国内顶尖源码下载站点 -> 源码我爱你

http://www.source520.com
http://www.source520.net
80G源码电子书免费免注册下载,大量精辟技术文档库随时更新
******************************************************************
附:为了站点持续发展,现有本站近年来收藏的大量大型商业源码低价出售,
详情请进入以下链接查看:
http://www.source520.com/building_delphi.htm

浏览商业代码请从如下URL进入查看实物:
1.商业源码库1: ftp://source520see3:browse@61.152.199.245/
2.商业源码库2: ftp://source520see2:browse@61.152.199.245/
 
后退
顶部