當前位置:首頁 » 文件管理 » 文件可以完成數據的增刪改查嗎
擴展閱讀
張紫妍電視劇全集 2024-04-25 21:46:32
蘑菇可以炒什麼 2024-04-25 21:44:34

文件可以完成數據的增刪改查嗎

發布時間: 2022-03-01 13:29:38

Ⅰ excel是怎麼實現增刪改查的,是不是自帶資料庫

將excel文件post到伺服器,在伺服器對excel進行解析,取得數據後存資料庫。

Ⅱ php 怎麼用txt文本作為資料庫,同時能實現增刪改查功能,id又是自動疊加呢

折騰。好好的資料庫不用,多簡單。

用txt文本作為資料庫,同時能實現增刪改查功能,id又是自動疊加,這就等於一個小型的資料庫了。雖然真的資料庫也是用文件存儲數據,但你想想有多麻煩,趁早換資料庫吧。

Ⅲ java io流對文件的增刪改查

可以通過BufferedReader 流的形式進行流讀取,之後通過readLine方法獲取到的內容,之後通過if判斷來實現在某些特定位置的查找、增加、刪除、修改操作。
舉例:
BufferedReader bre = null;
OutputStreamWriter pw = null;//定義一個流
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此時獲取到的bre就是整個文件的緩存流
pw = new OutputStreamWriter(new FileOutputStream(「D:/test.txt」),"GBK");//確認流的輸出文件和編碼格式,此過程創建了「test.txt」實例
while ((str = bre.readLine())!= null) // 判斷最後一行不存在,為空結束循環
{
if(str.indexOf("排除")<0){//判斷是否需要舍棄
pw.write(str);//將要寫入文件的內容,可以多次write
}
}
bre.close();//關閉流
pw.close();//關閉流
解釋:以上方法是實現的刪除,if中的條件改變下,即可實現其餘的功能。
備註:文件流用完之後必須及時通過close方法關閉,否則會一直處於打開狀態,直至程序停止,增加系統負擔。

Ⅳ 資料庫的增刪改查

1、資料庫增加數據:

1)插入單行

insert [into] <表名> (列名) values (列值)

例:insert into t_table (name,sex,birthday) values ('開心朋朋','男','1980/6/15')

2)將現有表數據添加到一個已有表 insert into <已有的新表> (列名) select <原表列名> from <原表名>

例:insert into t_table ('姓名','地址','電子郵件')

select name,address,emailfrom t_table

3)直接拿現有表數據創建一個新表並填充select <新建表列名> into <新建表名> from <源表名>例:select name,address,email into t_table from strde

2、資料庫刪除數據:

1)刪除<滿足條件的>行
delete from <表名> [where <刪除條件>]。

例:delete from t_tablewhere name='開心朋朋'(刪除表t_table中列值為開心朋朋的行)

2)刪除整個表truncate table <表名>

truncate table tongxunlu

注意:刪除表的所有行,但表的結構、列、約束、索引等不會被刪除;不能用語有外建約束引用的表

3、資料庫修改數據 update <表名> set <列名=更新值> [where <更新條件>]

例:update t_table set age=18 where name='藍色小名'

4、資料庫查詢數據:

1)精確(條件)查詢
select <列名> from <表名> [where <查詢條件表達試>] [order by <排序的列名>[asc或desc]]

2)查詢所有數據行和列。例:select * from a

說明:查詢a表中所有行和列

3)使用like進行模糊查詢

注意:like運算副只用於字元串,所以僅與char和varchar數據類型聯合使用

例:select * from a where name like '趙%'

說明:查詢顯示表a中,name欄位第一個字為趙的記錄

4)使用between在某個范圍內進行查詢

例:select * from a where nianling between 18 and 20

說明:查詢顯示表a中nianling在18到20之間的記錄

5)使用in在列舉值內進行查詢

例:select name from a where address in ('北京','上海','唐山')

說明:查詢表a中address值為北京或者上海或者唐山的記錄,顯示name欄位

(4)文件可以完成數據的增刪改查嗎擴展閱讀:

插入之前需要創建數據表,創建方式如下:

CREATE TABLE 表名稱
(
列名稱1 數據類型,
列名稱2 數據類型,
列名稱3 數據類型,
....
)

例如:--流程步驟定義表

create table T_flow_step_def(

Step_no int not null, --流程步驟ID

Step_name varchar(30) not null, --流程步驟名稱

Step_des varchar(64) not null, --流程步驟描述

Limit_time int not null, --時限

URL varchar(64) not null, --二級菜單鏈接

Remark varchar(256) not null,

)

Ⅳ 用java讀寫txt格式文件里的數據,並實現對數據的增刪改查,求大神知道一二,小弟剛涉足,不是太懂。,

實體類:
AAA屬性 id,testDate,road,num1,type1,num2,type2 記得添加get,set方法.
每讀取一行時值添加到AAA實體類對應屬性中,然後add至List。

樓主用好StringTokenizer 不建議用了,用string.split()方法吧 。
循環:
AAA bean = null;
List<AAA> list = new ArrayList<AAA>();
while (...)
{
bean = new AAA();
String[] arr = s.split("空格數自定");
String id = arr[0].trim();
String testDate= arr[1].trim();//考慮是否轉為時間格式
//依次讀取

//將讀取的值錄入到bean中
bean.setId(id);
bean.setTestDate(testDate);
//...依次錄入

list.add(bean);//將值添加到集合中
}
//OK ,真累!

Ⅵ 怎麼才能實現增刪改查,我剛學習java,老師讓寫一個項目

你學習java,然後是說用來安卓移動端開發嗎?如果用AS或eclipse開發工具可以通過SQLite實現,也可以用第三方的。但你剛學,老老實實的寫安卓自帶的吧.

如果是javaEE寫後台,那導入一些jar包之後,根據相應的方法去實現,想必你有相關資料吧,沒有就上網網路,有網路就是這么好,多多上網查資料,比在這問好很多,這是真的

Ⅶ 如何用C語言做到增刪改查 內詳

很早前幫朋友寫的,跟你的需求很像,給你用吧。
你可改下main函數,使它更貼近你的需求。

如果你不會改,再幫你改吧。

-------------------------------------------
#include <time.h>
#include <stdio.h>

#define NULL -2
#define ERROR -1
#define OK 1
#define TRUE 2
#define FALSE 3
#define Boolen int
#define Status int

#define LIST_INIT_SIZE 3
#define LIST_INCREMENT 2
#define NAME_LEN 13
#define DES_LEN 30

char ErrDescription[DES_LEN];

typedef struct{
int NO;
char Name[NAME_LEN];
enum{male,female} Sex;
int Age;
char Tel[15];
char Inserttime[64];
}ElemType,*ElemPointer;

typedef struct{
ElemPointer base; //基址
int length; //表長
int listsize; //內存佔用
int elemcount; //記錄數
}SqList,*SqPointer;

int ErrorEXP(int i)
{
switch(i)
{ case 1: strcpy(ErrDescription,"InitList::(ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType)) 空間申請失敗");break;
case 2: strcpy(ErrDescription,"IncreaseList::(ElemType *)realloc(L->base,(L->length + LIST_INCREMENT) * sizeof(ElemType)) 空間申請失敗");break;
case 3: strcpy(ErrDescription,"if(!L->base) return Error; SqList不存在");break;
case 4: strcpy(ErrDescription,"GetElem:: i 越界");break;
case 5: strcpy(ErrDescription,"ListInsert:: i 越界");break;
case 6: strcpy(ErrDescription,"ListInsert:: CALL IncreaseList(L)==ERROR return Error 鄰接空間申請失敗,由ListInsert返回");break;
case 7: strcpy(ErrDescription,"ListDelete:: i 越界");break;
case 8: strcpy(ErrDescription,"KeyInList:: i 越界");break;
case 9: strcpy(ErrDescription,"KeyInList:: CALL ListInsert(L,i,temp)==ERROR return Error 鄰接空間申請失敗,由KeyInList返回");break;
case 10: strcpy(ErrDescription,"ScanfList:: CALL KeyInList(L,i++)==ERROR return Error");break;
}
puts("!!!!!!!!!!!!!!! ERROR !!!!!!!!!!!!!!!\n");
puts(ErrDescription);
puts("\n!!!!!!!!!!!!!!! ERROR !!!!!!!!!!!!!!!\n");
return ERROR;
}

Status InitList(SqPointer L)
{
L->base = 0; //不可不要!!! 去掉後即使(ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType))失敗,系統也會認為正常
L->base = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if(!L->base) return ErrorEXP(1); //空間申請失敗,返回
L->length = LIST_INIT_SIZE;
L->listsize = L->length * sizeof(ElemType);
L->elemcount = 0;
return OK;
}

Status IncreaseList(SqPointer L)
{
ElemPointer newbase;
newbase = (ElemType *)realloc(L->base,(L->length + LIST_INCREMENT) * sizeof(ElemType));
if(!newbase) return ErrorEXP(2);
L->base = newbase;
L->length += LIST_INCREMENT;
L->listsize = L->length * sizeof(ElemType);
return OK;
}

Status DestroyList(SqPointer L)
{
if(!L->base) return ErrorEXP(3); //L不存在,返回
free(L->base);
L->length = NULL;
L->listsize = NULL;
L->elemcount = NULL;
return OK;
}

Status ClearList(SqPointer L)
{
if(!L->base) return ErrorEXP(3); //L不存在,返回
L->elemcount = 0;
return OK;
}

Boolen ListEmpty(SqPointer L)
{
if(!L->base) return ErrorEXP(3); //L不存在,返回
if(L->elemcount == 0)
return TRUE;
else
return FALSE;
}

int ListElemCount(SqPointer L)
{
if(!L->base) return ErrorEXP(3); //L不存在,返回
return L->elemcount;
}

Status GetElem(SqPointer L,int i,ElemType *ret) //調用此函數需將ret指向main函數域某一ElemType變數
{
if(!L->base) return ErrorEXP(3); //L不存在,返回
if(i > L->elemcount) return ErrorEXP(4); //i越界,返回
*ret = L->base[i-1]; //i 從1開始 此種方法在main中改變*ret會直接更改鏈表中數據
return OK;
}
//重大發現 指針型 temp->base 普通型L.base
int LocateElem(SqPointer L,char Locatename[]) //返回的i從1開始
{
int i=0;
ElemType *temp;
if(!L->base) return ErrorEXP(3); //L不存在,返回
while(i<L->elemcount)
{
temp=&(L->base[i]); //改為temp=L->base[i++];並去除下面的i++; ??
if(strcmp(temp->Name,Locatename) == 0) return i+1; //不能用temp->Name==locatename來試圖比較字元串
i++;
}
return 0;
}

Status ListInsert(SqPointer L,int i,ElemType newelem) //插入位置1<=i<=elemcount+1
{
ElemPointer newbase;
ElemType *temp,*flag;
if(!L->base) return ErrorEXP(3); //L不存在,返回
if(i<1 || i>L->elemcount + 1) return ErrorEXP(5);
if(L->elemcount == L->length)
if(IncreaseList(L)==ERROR) return ErrorEXP(6);
flag=&(L->base[i-1]); //插入位置
for(temp=&(L->base[L->elemcount-1]);temp>=flag;temp--)
*(temp+1)=*temp;
*flag=newelem;
L->elemcount++;
return OK;
}

Status ListDelete(SqPointer L,int i,ElemType *ret) //調用此函數需將ret指向main函數域某一ElemType變數
{
ElemType *temp;
if(!L->base) return ErrorEXP(3); //L不存在,返回
if(i<1 || i>L->elemcount) return ErrorEXP(7);
*ret=L->base[i-1]; //刪除位置,這里先返回該值
for(temp=&(L->base[i]);temp<=&(L->base[L->elemcount-1]);temp++)
*(temp-1)=*temp;
L->elemcount--;
return OK;
}

Status KeyInList(SqPointer L,int i)
{
ElemType temp;
time_t t;
char tmp[64];
char S;
if(!L->base) return ErrorEXP(3); //L不存在,返回
if(i<1 || i>L->elemcount + 1) return ErrorEXP(8);
printf("正在輸入第%d個元素的值:",i);
printf("\n編號:(int)\n");
scanf("%d",&temp.NO);
printf("\n姓名:(char *)\n");
scanf("%s",&temp.Name);
printf("\n性別:(m or f)\n");
do{
S=getch();
if(S=='m')
temp.Sex=male;
else if(S=='f')
temp.Sex=female;
else
puts("Key in 'm' or 'f'.\n");
}while(S!='m' && S!='f');
putchar(S);
printf("\n年齡:(int)\n");
scanf("%d",&temp.Age);
printf("\n電話:(char *)\n");
scanf("%s",&temp.Tel);
printf("\n記錄時間:\n");
t=time(0);
strftime(tmp,sizeof(tmp),"%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t));
puts(tmp);
strcpy(temp.Inserttime,tmp);

if(ListInsert(L,i,temp)==OK)
return OK;
else
return ErrorEXP(9);
}

ElemType ScanfElem()
{
ElemType temp;
time_t t;
char tmp[64];
char S;
printf("正在錄入元素:");
printf("\n編號:(int)\n");
scanf("%d",&temp.NO);
printf("\n姓名:(char *)\n");
scanf("%s",&temp.Name);
printf("\n性別:(m or f)\n");
do{
S=getch();
if(S=='m')
temp.Sex=male;
else if(S=='f')
temp.Sex=female;
else
puts("Key in 'm' or 'f'.\n");
}while(S!='m' && S!='f');
putchar(S);
printf("\n年齡:(int)\n");
scanf("%d",&temp.Age);
printf("\n電話:(char *)\n");
scanf("%s",&temp.Tel);
printf("\n記錄時間:\n");
t=time(0);
strftime(tmp,sizeof(tmp),"%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t));
puts(tmp);
strcpy(temp.Inserttime,tmp);

return temp;
}

Status ScanfList(SqPointer L,int i)
{
char p='c';
while(putchar('\n'),p=='c'||p=='C')
{ p='\0';

if(KeyInList(L,i++)==ERROR) return ErrorEXP(10);

printf("\nPress ESC key to exit or 'C' to continue...");
while(p!='c' && p!='C' && (int)p!=27)
p=getch();
}
return OK;
}

Status PrintListProperty(SqPointer L)
{
puts("SqList L Property:");
if(!L->base)
{ puts("鏈表不存在!");
return OK;}
else
puts("鏈表已初始化...\n");
printf("%d/%d BASE=%d,MemoryStatus=%d\n",L->elemcount,L->length,L->base,L->listsize);
return OK;
}

Status PrintOnScreen(SqPointer L)
{
int i;
char Stmp[7],t;
if(!L->base) return ErrorEXP(3); //L不存在,返回
puts("Push 'C' shell CLS or other key to skip.");
t=getch();
if(t=='c' || t=='C')
system("cls");
puts("數據表列印:");
for(i=0;i<=L->elemcount-1;i++)
{ printf("\nElem %d st:\n",i+1);
if(L->base[i].Sex == male)
strcpy(Stmp,"male");
else if(L->base[i].Sex == female)
strcpy(Stmp,"female");
else
strcpy(Stmp,"Unknow");
printf("NO:%d\tName:%s\t\tSex:%s\tAge:%d\n\tTel:%s\n\tInsertTime:%s\n",L->base[i].NO,L->base[i].Name,Stmp,L->base[i].Age,L->base[i].Tel,L->base[i].Inserttime);
}
return OK;
}

Status PrintElem(ElemPointer elem)
{
char Stmp[7];
printf("\nPrintElem:\n");
if(elem->Sex == male)
strcpy(Stmp,"male");
else if(elem->Sex == female)
strcpy(Stmp,"female");
else
strcpy(Stmp,"Unknow");
printf("NO:%d\tName:%s\t\tSex:%s\tAge:%d\n\tTel:%s\n\tInsertTime:%s\n",elem->NO,elem->Name,Stmp,elem->Age,elem->Tel,elem->Inserttime);
return OK;
}

void main() //把以上所有函數都串了起來
{
SqList TheList;
SqPointer ListP;
ElemType mylistelem,*elemtemp;
ElemPointer mylist;
int i;
char nameT[20];

elemtemp=&mylistelem; //*ret

ListP=&TheList;
if(InitList(ListP)==OK) puts("InitList(TheList)==OK");
PrintListProperty(ListP);
if(ListEmpty(ListP)==TRUE) puts("ListEmpty==True");
else puts("ListEmpty==False");
ScanfList(ListP,1);
PrintListProperty(ListP);
PrintOnScreen(ListP);

printf("ListElemCount return %d.",ListElemCount(ListP));

puts("\nGetElem index? ");
scanf("%d",&i);
if(GetElem(ListP,i,elemtemp)==OK) PrintElem(elemtemp);

puts("\nLocateElem name? ");
scanf("%s",nameT);
printf("LocateElem return %d.",LocateElem(ListP,nameT));

puts("\nListDelete index? ");
scanf("%d",&i);
if(ListDelete(ListP,i,elemtemp)==OK) PrintElem(elemtemp);

puts("\nListInsert index? ");
scanf("%d",&i);
puts("\nListInsert NEWELEM? ");
ListInsert(ListP,i,ScanfElem());
PrintListProperty(ListP);
PrintOnScreen(ListP);

if(ClearList(ListP)==OK) puts("ClearList==OK");
if(ListEmpty(ListP)==TRUE) puts("ListEmpty==True");
if(DestroyList(ListP)==OK) puts("DestroyList==OK");

getch();
}

/* 函數列表
類型 名稱 參數 說明
int ErrorEXP (int i) 錯誤描述符
Status InitList (SqPointer L) 初始化SqPointer L... 通過L返回base
Status IncreaseList (SqPointer L) L當前滿時,繼續申請空間
Status DestroyList (SqPointer L) 銷毀L
Status ClearList (SqPointer L) 把L置為空表
Boolen ListEmpty (SqPointer L) 判斷L是否為空表,是則返回TRUE
int ListElemCount (SqPointer L) 返回當前L中記錄的元素個數
Status GetElem (SqPointer L,int i,ElemType *ret) 通過*ret返回i號元素
int LocateElem (SqPointer L,char Locatename[]) 順序查找表,根據name欄位,返回首個匹配元素的i,無則返回0
Status ListInsert (SqPointer L,int i,ElemType newelem) 在L中的i號位置插入newelem元素
Status ListDelete (SqPointer L,int i,ElemType *ret) 刪除L中第i號元素,並用*ret返回該元素
Status KeyInList (SqPointer L,int i) 從鍵盤輸入單個元素並插入到i號位置
ElemType ScanfElem () 從鍵盤輸入單個元素返回一個ElemType類型的節點
Status ScanfList (SqPointer L,int i) 從i號開始遞增順序錄入元素到L,直到按'ESC'
Status PrintListProperty(SqPointer L) 列印L的屬性,列印格式為(已用空間/已申請空間 基址 內存佔用)
Status PrintOnScreen (SqPointer L) 列印整張L表到屏幕
Status PrintElem (ElemPointer elem) 列印單個ElemType類型的元素

時間倉促,所以亂了些,書上2章開頭 動態線性的順序表 的基本操作幾乎都寫了
不知你說的是不是這個,mian函數比較亂,只是把所有的基本操作都串了起來,你
可以根據情況改改主函數的調用過程,就會比較清楚是怎麼實現的了。你可以按F10
進行單部跟蹤,F11可以進入調用過程,一步一步跟著程序走一遍就好了。
關於動態鏈表的我之前寫過一個,也好象給你看過,這里再附上一起發過去。文件LinkList.c
只實現了構造鏈表,並列印出來的功能。
*/

Ⅷ 如何實現數據列表的增刪改

這個簡單,就是寫幾個jsp頁面:
1、一個jsp查詢資料庫表(網上查查怎麼用JDBC),生成的html列出來數據表內容,每行的後面加一個「刪除」,一個「修改」,分別鏈接到負責刪除和修改的jsp,參數是ID欄位的值,比如delete.jsp?id=223,modify.jsp?id=223這樣
頁面下面加個按鈕,指向新增頁面add.jsp
2、delete.jsp,根據參數,拼出來刪除的sql語句,執行,類似delete from yourtable where id=223
3、modify.jsp,針對資料庫表的各個欄位,生成一個html form,每個欄位對應一個input,根據參數,查詢出數據表當前值,放在表單各Input中,表單提交到modifysubmit.jsp,後者中生成update sql,完成修改
4、add.jsp,跟modify差不多,就是沒有填現有值的步驟,也是分兩步,一步生成表單讓用戶填,一步提交到資料庫。

Ⅸ 通過什麼方法可以實現資料庫的增刪改查

以mysql為例子:
1、增 insert
2、刪 delete
3、改 update
4、查 select

Ⅹ 如何在EXCEL中實現對資料庫的增刪改查

樓主要對哪個資料庫進行操作
可以考慮使用vba來實現

但是要看樓主具體要求的