1UNIQUE 关键字建唯一索引
mysql> CREATE TABLE `wb_blog` (
-> `id` smallint(8) unsigned NOT NULL,
-> `catid` smallint(5) unsigned NOT NULL DEFAULT '0',
-> `title` varchar(80) NOT NULL DEFAULT '',
-> `content` text NOT NULL,
-> PRIMARY KEY (`id`),
-> UNIQUE KEY `catename` (`catid`)
-> ) ;
如果建好表了,可以用以下语句建
mysql> CREATE UNIQUE INDEX catename ON wb_blog(catid);
你的程序中:in函数中用"w+"属性打开文件,文件被新建或清除内容,然后又用fread读取,这个矛盾,应用"r"属性打开读取。
用文本方式保存数据会有许多问题,比如你用fprintf(fp,"%d%s%s%lf%lf%lf%lf",comm[m]num,comm[m]name,comm[m]chang,comm[m]price,comm[m]count,comm[m]in,comm[m]total);}写数据时,数据全都接在一起,以后你怎么区分读入那个连续的字符串和那些double型数据呢?比如字符串是"aaa"和"bbb",写到文件中就是"aaabbb",浮点数是123456和789012,写到文件中是123456789012,这种情况建议加分隔符如"%d %s %s %lf %lf %lf %lf",但又要求你字符串中不允许出现分隔符字符,否则会影响以后的数据读取。
一般情况下是这样做的:程序采用二进制数据格式而不用文本格式
打开文件写的属性是"wb+"或"wb";读取时属性是"rb";
写整个记录(假设struct MMM comm[1024];): fwrite(comm[m],1,sizeof(struct MMM),fp);
读整个记录: fread(comm[m],1,sizeof(struct MMM),fp);
这样就可以不用一个一个数据单独处理了一次可读写整个结构的数据。
第一步:如何用POI *** 作Excel
@Test
public void createXls() throws Exception{
//声明一个工作薄
HSSFWorkbook wb = new HSSFWorkbook();
//声明表
HSSFSheet sheet = wbcreateSheet("第一个表");
//声明行
HSSFRow row = sheetcreateRow(7);
//声明列
HSSFCell cel = rowcreateCell(3);
//写入数据
celsetCellValue("你也好");
FileOutputStream fileOut = new FileOutputStream("d:/a/bxls");
wbwrite(fileOut);
fileOutclose();
}
第二步:导出指定数据库的所有表
分析:
1:某个数数据库有多少表,表名是什么?―――DataBaseMetadategetMetadate()getTables(null,null,null,new String[]{Table}); - excel的文件名称。
2:对每一个表进行select *** 作。 - 每一个sheet的名称。
3:分析表结构,rsgetMetadate(); ResultSetMedated
4:多个列,列名是什么- 字段名就是sheet的第一行信息。
5:获取每一行的数据 – 放到sheet第一行以后。
@Test
public void export() throws Exception{
//声明需要导出的数据库
String dbName = "focus";
//声明book
HSSFWorkbook book = new HSSFWorkbook();
//获取Connection,获取db的元数据
Connection con = DataSourceUtilsgetConn();
//声明statemen
Statement st = concreateStatement();
//stexecute("use "+dbName);
DatabaseMetaData dmd = congetMetaData();
//获取数据库有多少表
ResultSet rs = dmdgetTables(dbName,dbName,null,new String[]{"TABLE"});
//获取所有表名 - 就是一个sheet
List<String> tables = new ArrayList<String>();
while(rsnext()){
String tableName = rsgetString("TABLE_NAME");
tablesadd(tableName);
}
for(String tableName:tables){
HSSFSheet sheet = bookcreateSheet(tableName);
//声明sql
String sql = "select from "+dbName+""+tableName;
//查询数据
rs = stexecuteQuery(sql);
//根据查询的结果,分析结果集的元数据
ResultSetMetaData rsmd = rsgetMetaData();
//获取这个查询有多少行
int cols = rsmdgetColumnCount();
//获取所有列名
//创建第一行
HSSFRow row = sheetcreateRow(0);
for(int i=0;i<cols;i++){
String colName = rsmdgetColumnName(i+1);
//创建一个新的列
HSSFCell cell = rowcreateCell(i);
//写入列名
cellsetCellValue(colName);
}
//遍历数据
int index = 1;
while(rsnext()){
row = sheetcreateRow(index++);
//声明列
for(int i=0;i<cols;i++){
String val = rsgetString(i+1);
//声明列
HSSFCell cel = rowcreateCell(i);
//放数据
celsetCellValue(val);
}
}
}
conclose();
bookwrite(new FileOutputStream("d:/a/"+dbName+"xls"));
}
以上就是关于mysql数据库中创建唯一行索引怎么做全部的内容,包括:mysql数据库中创建唯一行索引怎么做、程序中怎么把struct结构体的数据存入mysql数据库的表中、如何用java将数据库中的表导出到excel等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)