当前位置:首页 » 文件管理 » 文件可以完成数据的增删改查吗
扩展阅读
ps放大字体怎样不变形 2024-05-05 09:23:48

文件可以完成数据的增删改查吗

发布时间: 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来实现

但是要看楼主具体要求的