C#程序和oracle

baidu_19271231 2014-08-27 09:28:15
别人写的一个连接oracle的程序,然后我测试能否运行,我该在oracle中创建那些数据表呢?
程序如下:using (CoreLab.Oracle.OracleConnection objConn = new CoreLab.Oracle.OracleConnection(ConfigurationManager.AppSettings["connectionString"]))
{
CoreLab.Oracle.OracleTransaction trans = null;
try
{
objConn.Open()
trans = objConn.BeginTransaction();
string sql = "select DataID from system.SSJ_Data where ServerName=:ServerName and FileName=:FileName";
CoreLab.Oracle.OracleCommand objCmd = objConn.CreateCommand();
objCmd.Transaction = trans;
objCmd.CommandText = sql;
objCmd.CommandType = CommandType.Text;
objCmd.Parameters.Add(":ServerName", ServerName);
objCmd.Parameters.Add(":FileName", Path.GetFileName(p));
//CoreLab.Oracle.OracleDataReader objDR = objCmd.ExecuteReader();
int dataID = int.MinValue;
object objResult = null;
objResult = objCmd.ExecuteScalar();
if (objResult != DBNull.Value && objResult != null)
{
dataID = int.Parse(objResult.ToString()); }
objCmd.Parameters.Clear();
bool isInserted = false;
if (dataID == int.MinValue)
{
sql = "select ssj_id.nextval as DataID from dual";
objCmd.CommandText = sql;
dataID = int.Parse(objCmd.ExecuteScalar().ToString());
sql = @"INSERT INTO system.SSJ_Data (DataID,PartNo, ServerID,ServerName,FileName,UploadTime,GIF1,GIF2,JPG1,JPG2,JPG3,JPG4,JPG5,WORD,FCT1,FCT2,FCT3,FCTLV1,FCTLV2,FCTLV3,FCT4,FCT5,FCT6,FCT7,FCT8,FCT9,FCT10,CHAOCHANUM,CHAOCHARATE,DJ,CV,SK,UU,ISOK) VALUES (:DataID,:PartNo,:ServerID,:ServerName,:Filename,sysdate,:GIF1,:GIF2,:JPG1,:JPG2,:JPG3,:JPG4,:JPG5,:WORD,:FCT1,:FCT2,:FCT3,:FCTLV1,:FCTLV2,:FCTLV3,:FCT4,:FCT5,:FCT6,:FCT7,:FCT8,:FCT9,:FCT10,:CHAOCHANUM,:CHAOCHARATE,:DJ,:CV,:SK,:UU,:ISOK)";
isInserted = true; }
else
{
sql = @"update system.SSJ_Data set PartNo=:PartNO, ServerID=:ServerID,ServerName=:ServerName,FileName=:FileName,UploadTime=sysdate,GIF1=:GIF1,GIF2=:GIF2,JPG1=:JPG1,JPG2=:JPG2,JPG3=:JPG3,JPG4=:JPG4,JPG5=:JPG5,WORD=:WORD,FCT1=:FCT1,FCT2=:FCT2,FCT3=:FCT3,FCTLV1=:FCTLV1,FCTLV2=:FCTLV2,FCTLV3=:FCTLV3,FCT4=:FCT4,FCT5=:FCT5,FCT6=:FCT6,FCT7=:FCT7,FCT8=:FCT8,FCT9=:FCT9,FCT10=:FCT10,CHAOCHANUM=:CHAOCHANUM,CHAOCHARATE=:CHAOCHARATE,DJ=:DJ,CV=:CV,SK=:SK,UU=:UU,ISOK=:ISOK where DataID=:DataID";
}
if (string.IsNullOrEmpty(sql))
{
ServerLog(this, string.Concat("由于无法查询序列号ssj_id,保存文件失败:", p)); }
else
{
objCmd.Parameters.Add(":DataID", dataID);
objCmd.Parameters.Add(":PartNO", partNO);
objCmd.Parameters.Add(":ServerID", ServerID);
objCmd.Parameters.Add(":ServerName", ServerName);
objCmd.Parameters.Add(":FileName", Path.GetFileName(p));
objCmd.Parameters.Add(":GIF1", CoreLab.Oracle.OracleDbType.Blob).Value = (fileBufers.ContainsKey("gif1") ? fileBufers["gif1"] : null);
objCmd.Parameters.Add(":GIF2", CoreLab.Oracle.OracleDbType.Blob).Value = (fileBufers.ContainsKey("gif2") ? fileBufers["gif2"] : null);
objCmd.Parameters.Add(":JPG1", CoreLab.Oracle.OracleDbType.Blob).Value = (fileBufers.ContainsKey("jpg1") ? fileBufers["jpg1"] : null);
objCmd.Parameters.Add(":JPG2", CoreLab.Oracle.OracleDbType.Blob).Value = (fileBufers.ContainsKey("jpg2") ? fileBufers["jpg2"] : null);
objCmd.Parameters.Add(":JPG3", CoreLab.Oracle.OracleDbType.Blob).Value = (fileBufers.ContainsKey("jpg3") ? fileBufers["jpg3"] : null);
objCmd.Parameters.Add(":JPG4", CoreLab.Oracle.OracleDbType.Blob).Value = (fileBufers.ContainsKey("jpg4") ? fileBufers["jpg4"] : null);
objCmd.Parameters.Add(":JPG5", CoreLab.Oracle.OracleDbType.Blob).Value = (fileBufers.ContainsKey("jpg5") ? fileBufers["jpg5"] : null);
objCmd.Parameters.Add(":WORD", CoreLab.Oracle.OracleDbType.Blob).Value = (fileBufers.ContainsKey("word") ? fileBufers["word"] : null);
objCmd.Parameters.Add(":FCT1", s0[0]);
objCmd.Parameters.Add(":FCT2", s1[0]);
objCmd.Parameters.Add(":FCT3", s2[0]);
objCmd.Parameters.Add(":FCTLV1", s[3]);
objCmd.Parameters.Add(":FCTLV2", s[4]);
objCmd.Parameters.Add(":FCTLV3", s[5]);
objCmd.Parameters.Add(":FCT4", s8[0]);
objCmd.Parameters.Add(":FCT5", s9[0]);
objCmd.Parameters.Add(":FCT6", s10[0]);
objCmd.Parameters.Add(":FCT7", s11[0]);
objCmd.Parameters.Add(":FCT8", s12[0]);
objCmd.Parameters.Add(":FCT9", s13[0]);
objCmd.Parameters.Add(":FCT10", s14[0]);
objCmd.Parameters.Add(":CHAOCHANUM", s15[0]);
objCmd.Parameters.Add(":CHAOCHARATE", s16[0]);
objCmd.Parameters.Add(":DJ", s17[0]);
objCmd.Parameters.Add(":CV", s18[0]);
objCmd.Parameters.Add(":SK", s19[0]);
objCmd.Parameters.Add(":UU", s20[0]);
objCmd.Parameters.Add(":ISOK", s21[0]);
objCmd.CommandText = sql;
int modifiedCount = objCmd.ExecuteNonQuery();
objCmd.Parameters.Clear();
if (modifiedCount == 1)
{
//保存成功、接着保存子表数据
StringBuilder sqlBuffer = new StringBuilder();
if (!isInserted)
{
sql = string.Concat("delete system.SSJ_SData where DataID=", dataID);
objCmd.CommandText = sql;
modifiedCount = objCmd.ExecuteNonQuery(); }
sql = @"insert into system.SSJ_SData values(sdata_id.nextval,:dataID,:NOi,:x1,:y1,:z1,:x2,:y2,:z2,:err)";
objCmd.CommandText = sql;
objCmd.Parameters.Add(":dataID", dataID);
objCmd.Parameters.Add(":NOi", (Int32)0);
objCmd.Parameters.Add(":x1", (float)0);
objCmd.Parameters.Add(":y1", (float)0);
objCmd.Parameters.Add(":z1", (float)0);
objCmd.Parameters.Add(":x2", (float)0);
objCmd.Parameters.Add(":y2", (float)0);
objCmd.Parameters.Add(":z2", (float)0);
objCmd.Parameters.Add(":err", (float)0);

int RowNO = 1;
for (int i = 0; i < dataList.Count; i += 7)
{
objCmd.Parameters["NOi"].Value = RowNO++;
objCmd.Parameters["x1"].Value = dataList[i];
objCmd.Parameters["y1"].Value = dataList[i + 3];
objCmd.Parameters["z1"].Value = dataList[i + 5];
objCmd.Parameters["x2"].Value = dataList[i + 1];
objCmd.Parameters["y2"].Value = dataList[i + 4];
objCmd.Parameters["z2"].Value = dataList[i + 6];
objCmd.Parameters["err"].Value = dataList[i + 2];
modifiedCount = objCmd.ExecuteNonQuery();
}

ServerLog(this, "上传数据成功!");
...全文
350 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-08-27
  • 打赏
  • 举报
回复
它跟表是同级别不同类型的东西 你上表的文件夹里去找,累死也找不到的.
baidu_19271231 2014-08-27
  • 打赏
  • 举报
回复
哦,这样啊,谢谢,我去查查
於黾 2014-08-27
  • 打赏
  • 举报
回复
不是说了么,序列是序列,不是表,也不是表里面的列 序列不等于序号列 英文叫SEQ,中文叫序列 有专门放序列的地方
baidu_19271231 2014-08-27
  • 打赏
  • 举报
回复
引用 18 楼 Z65443344 的回复:
dual不用管,序列需要创建,否则执行到ssj_id.nextval,ssj_id不存在,不就无法返回结果了么
拿着两个序列建在哪儿,还是建在dual中?
於黾 2014-08-27
  • 打赏
  • 举报
回复
引用 16 楼 baidu_19271231 的回复:
select ssj_id.nextval as DataID from dual; 就是说,我要测试的话,这条语句就不用管了么?
dual不用管,序列需要创建,否则执行到ssj_id.nextval,ssj_id不存在,不就无法返回结果了么
於黾 2014-08-27
  • 打赏
  • 举报
回复
oracle和sqlserver有很多区别 自增字段是个很重要的区别,slqserver里可以设置表的某一个字段自增,而oracle需要创建一个序列来产生自增的数字 函数也有很多不同,slqserver里获取系统时间用getsysdate()就可以直接获取系统时间,而oracle不能直接执行函数,只能执行查询才能获得结果,所以需要dual这个表
baidu_19271231 2014-08-27
  • 打赏
  • 举报
回复
select ssj_id.nextval as DataID from dual; 就是说,我要测试的话,这条语句就不用管了么?
於黾 2014-08-27
  • 打赏
  • 举报
回复
中文叫序列,英文叫SEQ
於黾 2014-08-27
  • 打赏
  • 举报
回复
序列是序列,跟表没有直接的关系 就是用来产生一个不重复的数字,调用.nextval使他自增,用来生成主键的 而dual是个系统表,不能增加,也不能删除,不可更改,里面只有一行一列,通常是用来获取一个计算的结果的 比如select 2*2 from dual,select sysdate from dual(获取系统时间)
baidu_19271231 2014-08-27
  • 打赏
  • 举报
回复
ssj_id是个序列 那这个序列还要添加到虚表dual中么? 如果要添加,那它的值该怎么定。
於黾 2014-08-27
  • 打赏
  • 举报
回复
insert into system.SSJ_SData values(sdata_id.nextval,:dataID,:NOi,:x1,:y1,:z1,:x2,:y2,:z2,:err)"; 子表就是按顺序录入,没管列名,如果其他地方没用到的话,随便起名吧 如果其他地方查询和录入需要用到列名,再参考下那里的代码
於黾 2014-08-27
  • 打赏
  • 举报
回复
select ssj_id.nextval as DataID from dual ssj_id是个序列 dual是oracle自带的表,不用管.
baidu_19271231 2014-08-27
  • 打赏
  • 举报
回复
那个dual和子表呢?
於黾 2014-08-27
  • 打赏
  • 举报
回复
system.SSJ_Data (DataID,PartNo, ServerID,ServerName,FileName,UploadTime,GIF1,GIF2,JPG1,JPG2,JPG3,JPG4,JPG5,WORD,FCT1,FCT2,FCT3,FCTLV1,FCTLV2,FCTLV3,FCT4,FCT5,FCT6,FCT7,FCT8,FCT9,FCT10,CHAOCHANUM,CHAOCHARATE,DJ,CV,SK,UU,ISOK 这就是表名和列名 表必须创建到system用户下 至于每个列的类型,你只能根据后面Parameters的类型对应创建了 目测至少有number,varchar,blob
道玄希言 2014-08-27
  • 打赏
  • 举报
回复
表名: SSJ_Data 列名至少有: DataID, PartNo, ServerID ,ServerName, FileName, UploadTime, GIF1, GIF2, JPG1, JPG2, JPG3, JPG4, JPG5, WORD, FCT1, FCT2, FCT3, FCTLV1, FCTLV2, FCTLV3, FCT4, FCT5, FCT6, FCT7, FCT8, FCT9, FCT10, CHAOCHANUM, CHAOCHARATE, DJ, CV, SK, UU, ISOK
baidu_19271231 2014-08-27
  • 打赏
  • 举报
回复
是有些坑人啊,求大神们给个答案啊
  • 打赏
  • 举报
回复
找找oraclehelp类。
走着看世界 2014-08-27
  • 打赏
  • 举报
回复
话说 开发人员就这么忍心不提供给你数据库,诡异。
baidu_19271231 2014-08-27
  • 打赏
  • 举报
回复
能帮忙写一下,要建的表名和列名么,还有类型
baidu_19271231 2014-08-27
  • 打赏
  • 举报
回复
我是测试他的程序 啊,只是不知道要建什么表,求指导啊
加载更多回复(6)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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