代码
1 #include <stdio.h>
2 #include <sqlite3.h>
3 #include <stdlib.h>
4 int xiugai(sqlite3 *db);
5 int shang(sqlite3 *db);
6 int shanchu(sqlite3 *db);
7 int chaxun(sqlite3 *db);
8 int main(int argc, const char *argv[])
9 {
10 //创建数据库并打开
11 sqlite3 *db;
12 if(sqlite3_open("./pp.db",&db)!=SQLITE_OK)
13 {
14 printf("创建失败\n");
15 return -1;
16
17 }
18 //创建表格
19 char tab[128]="create table if not exists student(id int,name char,scor float)";
20 char *erro;
21 int hh=sqlite3_exec(db,tab,NULL,NULL,&erro);
22 if(hh!=SQLITE_OK)
23 {
24 printf("%s\n",tab);
25 }
26 //功能选择
27 int a=0;
28 while(1)
29
30 {
31 fprintf(stderr,"---------------------------\n");
32 fprintf(stderr,"--------1 上传数据--------\n");
33 fprintf(stderr,"--------2 删除数据--------\n");
34 fprintf(stderr,"--------3 修改数据--------\n");
35 fprintf(stderr,"--------4 查询数据--------\n");
36 fprintf(stderr,"--------5 退出------------\n");
37 fprintf(stderr,"---------------------------\n");
38 int temp;
39 fprintf(stderr,"请选择你的功能>>");
40 scanf("%d",&temp);
41 switch(temp)
42 {
43 case 1:
44 shang(db);
45 printf("上传成功\n");
46 break;
47 case 2:
48 shanchu(db);
49 printf("删除成功\n");
50 break;
51 case 3:
52 xiugai(db);
53 printf("修改成功\n");
54 break;
55 case 4:
56 chaxun(db);
57 break;
58 case 5:
59 a=1;
60 break;
61 default:
62 printf("输入有错误请重新输入\n");
63 break;
64
65 }
66 if(a==1)
67 {
68 break;
69
70 }
71 if(temp!=4)
72 {
73 system("clear");
74 }
75
76 }
77 if(sqlite3_close(db)!=SQLITE_OK)
78 {
79 printf("关闭失败\n");
80 return -1;
81
82 }
83
84 return 0;
85 }
86
87 /*
88 * function: 上传数据
89 * @param [ in]
90 * @param [out]
91 * @return
92 */
93 int shang(sqlite3 *db)
94 {
95 int id;
96 char name[128];
97 float scor;
98 fprintf(stderr,"请输入id>>");
99 scanf("%d",&id);
100 getchar();
101 fprintf(stderr,"请输入姓名>>");
102 scanf("%s",name);
103 getchar();
104 fprintf(stderr,"请输入成绩>>");
105 scanf("%g",&scor);
106 getchar();
107 char tab[128]="";
108 sprintf(tab,"insert into student values(%d,'%s',%g)",id,name,scor);
109 char *erro;
110 int hh=sqlite3_exec(db,tab,NULL,NULL,&erro);
111 if(hh!=SQLITE_OK)
112 {
113 printf("%s\n",tab);
114 }
115 }
116 /*
117 * function: 删除数据
118 * @param [ in]
119 * @param [out]
120 * @return
121 */
122 int shanchu(sqlite3 *db)
123 {
124 int id;
125 char name[128];
126 float scor;
127 int hh;
128 char tab[128]="";
129 fprintf(stderr,"请输入你要删除的数据的方式\n");
130 printf("----------------------\n");
131 printf("---------1 id----------\n");
132 printf("---------2 name--------\n");
133 printf("---------3 scor--------\n");
134 printf("----------------------\n");
135 scanf("%d",&hh);
136 switch(hh)
137 {
138 case 1:
139 fprintf(stderr,"请输入id>>");
140 scanf("%d",&id);
141 getchar();
142 sprintf(tab,"delete from student where id=%d ",id);
143 break;
144 case 2:
145 fprintf(stderr,"请输入姓名>>");
146 scanf("%s",name);
147 getchar();
148 sprintf(tab,"delete from student where name=%s ",name);
149 break;
150 case 3:
151 fprintf(stderr,"请输入成绩>>");
152 scanf("%g",&scor);
153 getchar();
154 sprintf(tab,"delete from student where scor=%g",scor);
155 break;
156 default:
157 printf("输入有错误请重新输入\n");
158 return -1;
159 }
160 char *erro;
161 int h=sqlite3_exec(db,tab,NULL,NULL,&erro);
162 if(h!=SQLITE_OK)
163 {
164 printf("%s\n",tab);
165 }
166
167 }
168 /*
169 * function: 修改数据
170 * @param [ in]
171 * @param [out]
172 * @return
173 */
174 int xiugai(sqlite3 *db)
175 {
176 int id;
177 char name[128];
178 float scor;
179 int hh;
180 char tab[128]="";
181 fprintf(stderr,"请输入你要修改的成绩的方式\n");
182 printf("----------------------\n");
183 printf("---------1 id----------\n");
184 printf("---------2 name--------\n");
185 printf("----------------------\n");
186 scanf("%d",&hh);
187 switch(hh)
188 {
189 case 1:
190 fprintf(stderr,"请输入id>>");
191 scanf("%d",&id);
192 getchar();
193 fprintf(stderr,"请输入成绩>>");
194 scanf("%g",&scor);
195 sprintf(tab,"update student set scor=%g where id=%d",scor,id);
196 break;
197 case 2:
198 fprintf(stderr,"请输入姓名>>");
199 scanf("%s",name);
200 getchar();
201 fprintf(stderr,"请输入成绩>>");
202 scanf("%g",&scor);
203 sprintf(tab,"update student set scor=%g where name=%s",scor,name);
204 break;
205 default:
206 printf("输入有错误请重新输入\n");
207 return -1;
208 }
209 char *erro;
210 int h=sqlite3_exec(db,tab,NULL,NULL,&erro);
211 if(h!=SQLITE_OK)
212 {
213 printf("%s\n",tab);
214 }
215 }
216 int chaxun(sqlite3 *db)
217 {
218 char pp[]="select * from student";
219 char **xin=NULL;
220 int hang;
221 int lie;
222 int res=sqlite3_get_table(db,pp,&xin,&hang,&lie,NULL);
223 if(res!=SQLITE_OK)
224 {
225 printf("查询错误\n");
226 return -1;
227 }
228 int i=0;
229 for(;i<(hang+1)*lie;i++)
230 {
231 printf("%s\t",xin[i]);
232 if((i+1)%lie==0)
233 {
234 putchar(10);
235 }
236 }
237 return 0;
238 }
运行效果
1 #include <stdio.h>
2 #include <sqlite3.h>
3 #include <stdlib.h>
4 #include <string.h>
5 int xiugai(sqlite3 *db);
6 int shang(sqlite3 *db);
7 int shanchu(sqlite3 *db);
8 int chaxun(sqlite3 *db);
9 int main(int argc, const char *argv[])
10 {
11 //创建数据库并打开
12 sqlite3 *db;
13 if(sqlite3_open("./jb.db",&db)!=SQLITE_OK)
14 {
15 printf("失败\n");
16 return -1;
17
18 }
19 //创建表格
20 char tab[128]="create table if not exists cidian(name char ,stats char)";
21 char *erro;
22 int hh=sqlite3_exec(db,tab,NULL,NULL,&erro);
23 if(hh!=SQLITE_OK)
24 {
25 printf("创建失败\n");
26 return -1;
27 }
28 char buf[128];
29
30 FILE* fp=fopen("./dict.txt","r");
31 if(fp==NULL)
32 {
33 printf("打开失败\n");
34 return -1;
35 }
36 char na[128];
37 char shu[128];
38 int temp=0;
39 int i=0;
40 int kong=0;
41 int h;
42 int count=0;
43 int yi=0;
44 int er=0;
45 int san=0;
46 while(1)
47 {
48
49 char tab[128];
50 bzero(buf,sizeof(buf));
51 bzero(na,sizeof(buf));
52 bzero(shu,sizeof(buf));
53 bzero(tab,sizeof(tab));
54 int bb=0;
55 char* res=fgets(buf,sizeof(buf)-1,fp);
56 count++;
57 if(res==NULL)
58 {
59 break;
60 }
61 /// printf("读出来的%ld\n",strlen(res));
62 // if(count>50)
63 // {
64 // break;
65 // }
66 buf[strlen(res)-1]='\0';
67 // printf("buf来的%ld\n",strlen(buf));
68
69 for(i=0;i<strlen(buf);i++)
70 {
71 if(buf[i]==' ')
72 {
73 temp++;
74 if(temp==2)
75 {
76 if(buf[i+1]!=' ')
77 {
78 temp=2;
79 kong=i;
80 break;
81 }
82 }
83 if(temp==3)
84 {
85 if(buf[i+1]==' ')
86 {
87 temp=4;
88 kong=i+1;
89 break;
90 }
91 temp=3;
92 kong=i;
93 break;
94
95 }
96 }
97 }
98 if(temp==3)
99 {
100 for(int b=0;b<kong-2;b++)
101 {
102 na[b]=buf[b];
103 }
104 na[kong]='\0';
105
106 strncpy(shu,buf+(kong+1),strlen(buf)-strlen(na)-3);
107 temp=0;
108 int i=0;
109 int len = strlen(na);
110 for (int i = 0; i < len; i++) {
111 if (na[i] == '\'')
112 {
113 memmove(&na[i + 1], &na[i], len - i + 1);
114 na[i] = '\'';
115 i++;
116 len++;
117 }
118 }
119 sprintf(tab,"insert into cidian values('%s','%s')",na,shu);
120 h=sqlite3_exec(db,tab,NULL,NULL,NULL);
121 if(h!=SQLITE_OK)
122 {
123 printf("发送失败111%s%d\n",buf,count);
124 printf("nale=%ld shulen=%ld",strlen(na),strlen(shu));
125 printf("na=%s shu=%s\n",na,shu);
126
127 }
128
129 yi++;
130
131 }
132 if(temp==4)
133 {
134 for(int c=0;c<kong-2;c++)
135 {
136 na[c]=buf[c];
137 }
138 na[kong]='\0';
139 strncpy(shu,buf+(kong+1),strlen(buf)-strlen(na)-3);
140 temp=0;
141 sprintf(tab,"insert into cidian values('%s','%s')",na,shu);
142 h=sqlite3_exec(db,tab,NULL,NULL,NULL);
143 if(h!=SQLITE_OK)
144 {
145 printf("发送失败125\n");
146
147 }
148 for (int i = 0; i < len; i++) {
149 if (na[i] == '\'')
150 {
151 memmove(&na[i + 1], &na[i], len - i + 1);
152 na[i] = '\'';
153 i++;
154 len++;
155 }
156 }
157
158 er++;
159 }
160 if(temp==2)
161 {
162 for(int c=0;c<kong-1;c++)
163 {
164 na[c]=buf[c];
165 }
166 na[kong-1]='\0';
167 strncpy(shu,buf+(kong+1),strlen(buf)-strlen(na)-2);
168 temp=0;
169 sprintf(tab,"insert into cidian values('%s','%s')",na,shu);
170 h=sqlite3_exec(db,tab,NULL,NULL,NULL);
171 if(h!=SQLITE_OK)
172 {
173 printf("发送失败149\n");
174
175 }
176 for (int i = 0; i < len; i++) {
177 if (na[i] == '\'')
178 {
179 memmove(&na[i + 1], &na[i], len - i + 1);
180 na[i] = '\'';
181 i++;
182 len++;
183 }
184 }
185
186
187 san++;
188 }
189
190
191 // printf("%d %s buf的长度%ld\n",count,buf,strlen(buf));
192 //printf(" %d 读出来的%s ==%ld %s ==%ld\n", count,na,strlen(na),shu,strlen(shu));
193
194 }
195 printf("count=%d\n",count);
196 printf("he=%d\n",yi+er+san);
197 if(count==(yi+er+san))
198 {
199 printf("相等%d\n",count);
200
201 }
202
203
204 return 0;
205
206 }
运行效果