Linux从mysql中读取数据_Linux 下读取目录下文件,并将文件信息写入mysql数据库

Linux  下读取目录下文件,并将文件信息写入mysql数据库

1.[图片] 360反馈意见截图16411209498478.png

25115209_1w7l.png

2.[图片] 360反馈意见截图162303195810051.png

25115209_toss.png

3.[代码]需要传入一个参数,数据库如图

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define N 7

MYSQL my_sql;

DIR * my_dir = NULL;

char *args[N] = {NULL,NULL,NULL,NULL,NULL,NULL,NULL};

void read_dir(char *);

void connect_mysql();

void set_work();

void get_file_infor(const char *,char *);

void write_mysql();

int main(int argc,char *argv[])

{

if(argc != 2)

{

fprintf(stderr,"arguments is not two!\n");

return -1;

}else

{

connect_mysql();

set_work();

read_dir(argv[1]);

}

mysql_close(&my_sql);

return EXIT_SUCCESS;

}

void read_dir(char *dirname)

{

struct dirent * dir;

int n = 0;

my_dir = opendir(dirname);

if(!my_dir)

{

fprintf(stderr,"open dir fail %s\n",strerror(errno));

}else

{

while((dir = readdir(my_dir)))

{

if(strcmp(".",dir->d_name)&&strcmp("..",dir->d_name))

{

for(;n < N;n++)

{

args[n] = (char *)malloc(256);

if(!args[n])

{

fprintf(stderr,"malloc fail\n");

closedir(my_dir);

exit(-1);

}

}

args[0] = dir->d_name;

get_file_infor(dir->d_name,dirname);

printf("\n");

}

}

}

}

void connect_mysql()

{

mysql_init(&my_sql);

if(mysql_real_connect(&my_sql,"localhost","ma","123456ma",

"student",0,0,0))

{

printf("connect mysql success\n");

}else{

fprintf(stderr,"connect mysql fail %s",mysql_error(&my_sql));

exit(-1);

}

}

void set_work()

{

int res1,res2;

res1 =mysql_query(&my_sql,"set names utf8");

res2 = mysql_query(&my_sql,"use student");

if(res1)

{

fprintf(stderr,"set character fail! %s\n",mysql_error(&my_sql));

}else

printf("set character success !\n");

if(res2)

{

fprintf(stderr,"use student database fail ! %s\n",mysql_error(&my_sql));

}else

printf("use database success !\n");

}

void write_mysql()

{

printf("\t#######start write into mysql#######\n");

int res ;

char * infor = (char *)malloc(512);

memset(infor,0,512);

sprintf(infor,"INSERT INTO File(filename,filemode,filelink,fileown,filegroup,filetime,filesize) VALUES ('%s','%s',%s,'%s','%s','%s',%s)",args[0],args[1],args[2],args[3],args[4],args[5],args[6]);

infor[strlen(infor)] = '\0';

//printf("%s\n",infor);

res = mysql_query(&my_sql,infor);

if(!res)

printf("Insert %lu rows\n",(unsigned long)mysql_affected_rows(&my_sql));

else

fprintf(stderr,"Insert data fail %s\n",mysql_error(&my_sql));

}

void get_file_infor(const char *path1,char *arg)

{

struct stat filestat;

int n = 0;

char *path = (char *)malloc(256);

memset(path,0,256);

sprintf(path,"%s/%s",arg,path1);

if(lstat(path,&filestat))

{

fprintf(stderr,"get inode information fail %s\n",strerror(errno));

return;

}else

{

switch(filestat.st_mode & S_IFMT)

{

case S_IFBLK: args[1] = "block";break;

case S_IFCHR: args[1] = "character";break;

case S_IFDIR: args[1] = "directory";break;

case S_IFIFO: args[1] = "FIFO/pipe";break;

case S_IFLNK: args[1] = "symlink";break;

case S_IFREG: args[1] = "regularfile";break;

case S_IFSOCK: args[1] = "socket";break;

default: args[1] = "unknown";

}

sprintf(args[2],"%ld ",(unsigned long)filestat.st_nlink);

struct passwd * passwd = getpwuid(filestat.st_uid);

sprintf(args[3],"%s ",passwd->pw_name);

struct group * group = getgrgid(filestat.st_gid);

sprintf(args[4],"%s ",group->gr_name);

struct tm *filetime = gmtime(&(filestat.st_mtime));

sprintf(args[5],"%d/%d/%d",filetime->tm_year+1900,filetime->tm_mon,filetime->tm_mday);

sprintf(args[6],"%lld",filestat.st_size);

write_mysql();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java的JDBC API来连接MySQL数据库并查询数据,然后使用Java IO流将数据写入到TXT文件。具体步骤如下: 1. 导入MySQL JDBC驱动程序 在开始编写Java程序之前,需要先下载并导入MySQL JDBC驱动程序。可以从MySQL官方网站下载最新版本的JDBC驱动程序,并将其添加到Java项目的类路径。 2. 连接MySQL数据库 使用JDBC API提供的DriverManager类和Connection接口来连接MySQL数据库。需要提供MySQL数据库的URL、用户名和密码等信息。代码示例如下: ``` String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password); ``` 3. 查询数据 连接成功后,可以使用Java的Statement或PreparedStatement对象来执行SQL查询语句,获取MySQL数据库的数据。代码示例如下: ``` Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM mytable"); while (rs.next()) { // 处理查询结果 } ``` 4. 写入TXT文件 使用Java IO流FileWriter和BufferedWriter类将查询结果写入到TXT文件。代码示例如下: ``` File file = new File("data.txt"); FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); while (rs.next()) { String data = rs.getString("data"); bw.write(data); bw.newLine(); } bw.close(); fw.close(); ``` 完整的Java代码示例: ``` import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class MySQLToTXT { public static void main(String[] args) throws Exception { String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM mytable"); File file = new File("data.txt"); FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); while (rs.next()) { String data = rs.getString("data"); bw.write(data); bw.newLine(); } bw.close(); fw.close(); rs.close(); stmt.close(); conn.close(); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值