java实现oracle数据库中表的增删改查功能,并且有界面,急!

求大神帮忙,给我项目工程文件,大概说明一下怎么用吧。谢谢!fendouyc@126.com... 求大神帮忙,给我项目工程文件,大概说明一下怎么用吧。谢谢!
fendouyc@ 126.com
展开
 我来答
ansiansi
2013-06-18 · TA获得超过294个赞
知道小有建树答主
回答量:650
采纳率:0%
帮助的人:383万
展开全部
百度jdbc,这个东西又不难
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
第五传
推荐于2017-10-08
知道答主
回答量:16
采纳率:0%
帮助的人:7万
展开全部

  编写proc程序实现对account账户,trans_record交易记录进行相应操作。

  account (id,name,balance)

  trans_record (id, trans_date,record,balance)

  添加新账户,查询,更新,查询一段时间内交易记录。

  将trans_record内数据导出为文本文档。

  #########################################################################

  以下程序为本人初学oracle编写的第一个proc程序,有很多瑕疵,望见谅!

  #########################################################################

  修改:
进一步修改程序游标无法跳出的问题,以及导出为文本时无法将全部数据导出的问题。2013-13-14 15:17


  [cpp] view plaincopy

  <pre name="code" class="cpp">EXEC SQL INCLUDE SQLCA.H

  #include <stdio.h>

  #include <string.h>

  #include <stdlib.h>

  /**************************************************************************

  ############### Main ##############

  *************************************************************************/

  int main(int argc, char **argv)

  {

  EXEC SQL BEGIN DECLARE SECTION;

  

  char username[100];

  char password[100];

  char servername[100];

  char sysdate[100];

  int n = 0,m = 0,i = 0,z = 0,r = 0;

  char bdate[10],edate[10];

  char user_name[10];

  int user_balance = 0;

  char user_record[20];

  char user_trans_date[10];

  struct myaccount{

  int id;

  char name[10];

  int balance;

  };

  struct myaccount myaccount;

  struct record{

  int id;

  char date[10];

  char rec[20];

  int balance;

  };

  struct record myrecord;

  EXEC SQL END DECLARE SECTION;

  

  if (argc<4) {

  printf("dbtest username passowrd servicename \n");

  return (-1);

  }

  

  sprintf(username, argv[1]);

  sprintf(password, argv[2]);

  sprintf(servername, argv[3]);

  

  EXEC SQL CONNECT :username IDENTIFIED BY :password USING :servername;

  if(sqlca.sqlcode != 0) {

  printf("connect database %s/%s@%s error \n", username, password, servername);

  printf("sqlca.sqlcode=[%d]\n",sqlca.sqlcode); \

  printf("sqlerr=[%s]\n",sqlca.sqlerrm.sqlerrmc); \

  printf("filename=[%s]\n",__FILE__);\

  printf("fileline=[%d]\n",__LINE__);\

  fflush(stdout);

  return -1;

  }

  

  /********************************************************************

  create account&&trans_record.

  ******************************************************************/

  EXEC SQL CREATE TABLE trans_record(id NUMBER ,trans_date DATE,

  record VARCHAR2(50) ,balance NUMBER );

  if (sqlca.sqlcode == 0) {

  printf("create table trans_record ok \n");

  }

  else {

  printf("create table trans_record FAILED \n");

  }

  EXEC SQL CREATE TABLE account(id NUMBER ,name VARCHAR2(20) ,balance NUMBER);

  if (sqlca.sqlcode == 0) {

  printf("create table account ok \n");

  }

  else {

  printf("create table account FAILED \n");

  }

  /********************************************************************

  insert into account&&trans_record

  ******************************************************************/

  EXEC SQL INSERT INTO account VALUES(1,'xiaoming',3000);

  EXEC SQL INSERT INTO account VALUES(2,'xiaohua',4000);

  EXEC SQL INSERT INTO account VALUES(3,'xiaolei',5000);

  EXEC SQL INSERT INTO account VALUES(4,'xiaozhan',6000);

  if (sqlca.sqlcode == 0) {

  printf("insert table account ok \n");

  }

  else {

  printf("insert table account FAILED \n");

  }

  EXEC SQL INSERT INTO trans_record VALUES(2,to_date('2012-11-12','yyyy-mm-dd'),'expense1000',3000);

  EXEC SQL INSERT INTO trans_record VALUES(1,to_date('2012-11-12','yyyy-mm-dd'),'expense1000',3000);

  if (sqlca.sqlcode == 0) {

  printf("insert table trans_record ok \n");

  }

  else {

  printf("insert table  trans_record FAILED \n");

  }

  

  EXEC SQL COMMIT ;

  /********************************************************************

  Select account&&trans_record

  ******************************************************************/

  printf("please input the number which you want select!\n");

  scanf("%d",&n);

  EXEC SQL DECLARE mycursor2 CURSOR FOR SELECT * FROM account \

  WHERE id = :n;

  if (sqlca.sqlcode == 0) {

  printf("select account ok \n");

  }

  else {

  printf("sqlca.sqlcode=[%d]\n",sqlca.sqlcode); \

  printf("sqlerr=[%s]\n",sqlca.sqlerrm.sqlerrmc); \

  printf("filename=[%s]\n",__FILE__);\

  printf("fileline=[%d]\n",__LINE__);\

  fflush(stdout);

  }

  EXEC SQL OPEN mycursor2;

  EXEC SQL WHENEVER NOT FOUND DO break;

  while(1){

  EXEC SQL FETCH mycursor2 INTO :myaccount.id,:myaccount.name, \

  :myaccount.balance;

  printf("ID=%d,NAME=%s,BALANCE=%d\n",myaccount.id,myaccount.name, \

  myaccount.balance);

  }

  EXEC SQL CLOSE mycursor2;

  

  printf("Select record from trans_record!\n");

  printf("please input the number which you want select!\n");

  scanf("%d",&m);

  

  printf("please input the begin date(example:20120101): \n");

  for(i = 0; i < 9; i++)

  scanf("%c",&bdate[i]);

  bdate[9]='\0';

  //  printf("%s\n",to_date(bdate,'yyyy-mm-dd'));

  printf("please input the end  date(example:20121222): \n");

  for(i = 0; i < 9; i++)

  scanf("%c",&edate[i]);

  edate[9]='\0';

  //  printf("%s\n",to_date(edate,'yyyy-mm-dd'));

  

  EXEC SQL DECLARE mycursor CURSOR FOR SELECT id,to_char(trans_date,'yyyy-mm-dd'),record,balance FROM trans_record WHERE id = :m  AND trans_date > to_date(:bdate,'yyyy-mm-dd') AND trans_date < to_date(:edate,'yyyy-mm-dd');

  if (sqlca.sqlcode == 0) {

  printf("select account ok .\n");

  }

  else {

  printf("sqlca.sqlcode=[%d]\n",sqlca.sqlcode); \

  printf("sqlerr=[%s]\n",sqlca.sqlerrm.sqlerrmc); \

  printf("filename=[%s]\n",__FILE__);\

  printf("fileline=[%d]\n",__LINE__);\

  fflush(stdout);

  }

  EXEC SQL OPEN mycursor;

  EXEC SQL WHENEVER NOT FOUND DO break;

  while(1)

  {

  EXEC SQL FETCH mycursor INTO :myrecord.id,:myrecord.date, \

  :myrecord.rec,:myrecord.balance;

  printf("ID=%d,TRANS_DATE=%s,RECORD=%s,BALANCE=%d\n",myrecord.id,myrecord.date,myrecord.rec,myrecord.balance);

  }

  EXEC SQL CLOSE mycursor;

  

  /*

  EXEC SQL SELECT trans_date,record,balance INTO :user_trans_date,user_record,:user_balance FROM trans_record WHERE id = :m AND trans_date > to_date(:bdate,'yyyy-mm-dd') AND trans_date < to_date(:edate,'yyyy-mm-dd');

  

  printf("ID=%d,TRANS_DATE=%s,RECORD=%s,BALANCE=%d\n",m,user_trans_date,user_record,user_balance);

  if (sqlca.sqlcode == 0) {

  printf("select account ok .\n");

  }

  else {

  printf("sqlca.sqlcode=[%d]\n",sqlca.sqlcode); \

  printf("sqlerr=[%s]\n",sqlca.sqlerrm.sqlerrmc); \

  printf("filename=[%s]\n",__FILE__);\

  printf("fileline=[%d]\n",__LINE__);\

  fflush(stdout);

  }

  */

  /********************************************************************

  Update account&&trans_record

  ******************************************************************/

  /*

  printf("please input the number which you want update!\n");

  scanf("%d",&z);

  

  EXEC SQL UPDATE account SET name = 'xxx' WHERE id = :z;

  if (sqlca.sqlcode == 0) {

  printf("update table account OK .\n");

  }

  else {

  printf("update table account FAILED .\n");

  }

  */

  /********************************************************************

  import&&export  trans_record

  ******************************************************************/

  /********************* import ***************************/

  FILE *fp = fopen("/home/oracle/recfile.txt", "w+t");

  if (fp == NULL) {

  perror("Open file recfile");

  exit(1);

  }

  EXEC SQL DECLARE mycursor1 CURSOR FOR SELECT id,to_char(trans_date,'yyyy-mm-dd'),record,balance FROM trans_record;

  if (sqlca.sqlcode == 0) {

  printf("select trans_record for write is ok.\n");

  }

  else {

  printf("sqlca.sqlcode=[%d]\n",sqlca.sqlcode); \

  printf("sqlerr=[%s]\n",sqlca.sqlerrm.sqlerrmc); \

  printf("filename=[%s]\n",__FILE__);\

  printf("fileline=[%d]\n",__LINE__);\

  fflush(stdout);

  }

  EXEC SQL OPEN mycursor1;

  EXEC SQL WHENEVER NOT FOUND DO break;

  while(1)

  {

  EXEC SQL FETCH mycursor1 INTO :myrecord.id,:myrecord.date, \

  :myrecord.rec,:myrecord.balance;

  r += fwrite(&myrecord, sizeof(struct record), 3, fp);

  fwrite( "\n", 1, 1, fp );

  

  }

  fclose(fp);

  EXEC SQL CLOSE mycursor1;

  printf("write line : %d\n",r);

  

  EXEC SQL TRUNCATE TABLE trans_record;

  if (sqlca.sqlcode == 0) {

  printf("truncate table trans_record ok \n");

  }

  else {

  printf("truncate  table  trans_record FAILED \n");

  }

  

  

  /********************* export ***************************/

  fp = fopen("/home/oracle/recfile.txt", "r+t");

  if (fp == NULL) {

  perror("Open file recfile");

  exit(1);

  }

  i = 0;

  while(i < r)

  {

  fread(&myrecord, sizeof(struct record), r, fp);

  EXEC SQL INSERT INTO trans_record VALUES(:myrecord.id, \

  to_date(:myrecord.date,'yyyy-mm-dd'),:myrecord.rec, \

  :myrecord.balance);

  if (sqlca.sqlcode == 0) {

  printf("insert table trans_record ok \n");

  }

  else {

  printf("insert table  trans_record FAILED \n");

  }

  printf("%d,%s,%s,%d\n",myrecord.id,myrecord.date,myrecord.rec,\

  myrecord.balance);

  i++;

  }

  fclose(fp);

  EXEC SQL COMMIT;

  

  /********************************************************************

  Drop account&&trans_record

  ******************************************************************/

  printf("check data and drop the table!\n");

  int q;

  scanf("%d",&q);

  

  EXEC SQL DROP TABLE account;

  if (sqlca.sqlcode == 0) {

  printf("drop table account OK .\n");

  }

  else {

  printf("drop table account FAILED .\n");

  }

  

  EXEC SQL DROP TABLE trans_record;

  if (sqlca.sqlcode == 0) {

  printf("drop table trans_record OK .\n");

  }

  else {

  printf("drop table trans_record FAILED .\n");

  }

  

  

  EXEC SQL COMMIT WORK RELEASE;

  

  return 0;

  }</pre>

  <pre></pre>

  


本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
五昊苍Wy
2013-06-18 · TA获得超过158个赞
知道小有建树答主
回答量:271
采纳率:0%
帮助的人:129万
展开全部
ejb的可以不
追问
我也不太懂,可以用就行,我们一次大作业。
追答
等我回去给你找找,我现在在上班,回家自己电脑有一些简单的可以发给你看看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式