最近,慢慢开始着手编写一些java小程序。写代码的时间总是过得好快,今天用了几个小时研究了一下Java的IO。习惯于c++,感觉Java的IO好庞大!!有点乱,写了一个实用的小程序,能实现如下功能:
1、从文件中一行一行的读数据
2、将读出来的数据存放入vector中
3、将vector中的内容在屏幕上打印出来
package seven.test5;
import java.io.*;
import java.util.Vector;
//@SuppressWarnings("unchecked")
public class read_to_vector{
public static void main(String[] args){
try{
Vector<String> vec = new Vector<String>();
//input
FileReader fileReader = new FileReader(args[0]);
BufferedReader bufferedReader = new BufferedReader(fileReader);
//output
String s = null;
while((s = bufferedReader.readLine()) != null)
{
vec.add(s);
}
for(int i = 0; i< vec.size(); i++)
{
System.out.print("向量位置:" + i + "\t");
System.out.println(vec.get(i));
}
fileReader.close();
bufferedReader.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
注:1、@SuppressWarnings("unchecked"),可以忽略掉程序在编译时出现的警告。
2、Vector现在并不常用,习惯C++,见到这个比较亲切,应该多学学Collection类。
3、Java 1.5中Vector形式为:Vector<> vector_Name = new Vector<>()。
4、注意使用java.io.*使的异常捕捉。
PS:
1、一个从文件读内容,单个字符打印在屏幕上的程序:
import java.io.FileReader;
import java.io.IOException;

public class readFile
{
public static void readfile(String file)
{
try
{
FileReader fr = new FileReader(file);
int ch = 0;
while((ch=fr.read())!=-1)
{
System.out.println((char)ch);
}
}catch(IOException e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
readfile("e:\\dd.txt");
}
}
2、几个相关代码网址:
http://coderdream.javaeye.com/blog/246936
http://topic.csdn.net/u/20080224/19/b950e3e0-50f1-4a2c-9ac7-fd2344beae69.html
3、中文Java API
http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index.html
4、C++中上述功能的实现(对照一下,防止忘记)
#include <fstream>
#include <iostream>
int main(int argc, char **argv)
{
string line;
vector<string> vec;
ifstream in(argv[1].c_str());
while(getline(in,line))
{
vec.push_back(line);
}
for(int i = 0; i < vec.size(); i++)
{
cout << "向量位置:" << i << vec[i] << endl;
}
return 0;
}
到这里,看电影去了,希望能早日完成过渡。呵呵。
该函数的头文件在c++中是"cstdlib.h"
用 法:char *itoa(int value, char *string, int radix);
详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.
参数:
value: 待转化的整数。
radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。
* string: 保存转换后得到的字符串。
返回值:
char * : 指向生成的字符串, 同*string。
代码:
(实现功能:任意输入由a~z组成的字符串,对应输出这些字符串对应的字母表中的字母的位置)
#include <iostream>
#include <iomanip>
#include <string>
#include <map>
#include <cstdlib>
#include <vector>
using namespace std;
int main()
{
string s, s1, s2;
map<int, char> m;
vector<string> n;
int j = 'a';
char temp[1];//注意,此处为数组。
int t;
for(int i = 1; i<= 26; ++i)
{
m[i]= (char)j;
j++;
}
while(cin >> s)
{
for(int i =0; i< s.length(); ++i)
{
for(map<int, char>::iterator iter = m.begin(); iter!= m.end(); ++iter)
{
if(s[i]==iter->second)
{
t= iter->first;
itoa(t,temp,10);
s2.append(temp);
s2.append(" ");
}
}
}
n.push_back(s2);
s2.clear();
}
for(int i=0; i<n.size(); ++i)
{
cout << n[i] << endl;
}
return 0;
}
结果:
输入:abcdfed
gfzdefg
显示:1 2 3 4 6 5 4
7 6 26 4 5 6 7
一、简介
SQL是英文Structured Query Language的缩写,意思为结构化查询语言。
SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。
目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create, 以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。
下面,我们就来详细介绍一下SQL语言的基本知识。
一个典型的关系型数据库通常由一个或多个被称作表格的对象组成。数据库中的所有数据或信息都被保存在这些数据库表格中。数据库中的每一个表格都具有自己唯一的表格名称,都是由行和列组成,其中每一列包括了该列名称,数据类型,以及列的其它属性等信息,而行则具体包含某一列的记录或数据。以下,是一个数据库表格的实例。
| 栏目 | 用户群 |
| 新手上路 | 电脑初学者 |
| 软件教室 | 一般的电脑用户 |
| 设计教室 | 电脑设计爱好者 |
| 开发教室 | 电脑编程人员 |
该表格中“栏目”, “用户群”就是两个不同的列,而表格中的每一行则包含了具体的表格数据。
二、 创建表格
SQL语言中的create table语句被用来建立新的数据库表格。create table语句的使用格式如下:
----------------------------------------------
create table tablename
(column1 data type,
column2 data type,
column3 data type);
----------------------------------------------
如果用户希望在建立新表格时规定列的限制条件,可以使用可选的条件选项:
----------------------------------------------
create table tablename
(column1 data type [constraint],
column2 data type [constraint],
column3 data type [constraint]);
----------------------------------------------
举例如下:
----------------------------------------------
create table employee
(firstname varchar(15),
lastname varchar(20),
age number(3),
address varchar(30),
city varchar(20));
----------------------------------------------
简单来说,创建新表格时,在关键词create table后面加入所要建立的表格的名称,然后在括号内顺次设定各列的名称,数据类型,以及可选的限制条件等。注意,所有的SQL语句在结尾处都要使用“;”符号。
使用SQL语句创建的数据库表格和表格中列的名称必须以字母开头,后面可以使用字母,数字或下划线,名称的长度不能超过30个字符。注意,用户在选择表格名称时不要使用SQL语言中的保留关键词,如select, create, insert等,作为表格或列的名称。
数据类型用来设定某一个具体列中数据的类型。例如,在姓名列中只能采用varchar或char的数据类型,而不能使用number的数据类型。
SQL语言中较为常用的数据类型为:
char(size):固定长度字符串,其中括号中的size用来设定字符串的最大长度。Char类型的最大长度为255字节。
varchar(size):可变长度字符串,最大长度由size设定。
number(size):数字类型,其中数字的最大位数由size设定。
Date:日期类型。
number(size,d):数字类型,size决定该数字总的最大位数,而d则用于设定该数字在小数点后的位数。
最后,在创建新表格时需要注意的一点就是表格中列的限制条件。所谓限制条件就是当向特定列输入数据时所必须遵守的规则。例如,unique这一限制条件要求某一列中不能存在两个值相同的记录,所有记录的值都必须是唯一的。除unique之外,较为常用的列的限制条件还包括 not null和primary key等。not null用来规定表格中某一列的值不能为空。primary key则为表格中的所有记录规定了唯一的标识符。
三、 数据查询
在众多的SQL命令中,select语句应该算是使用最频繁的。select语句主要被用来对数据库进行查询并返回符合用户查询标准的结果数据。Select语句的语法格式如下:
----------------------------------------------
select column1 [, column2,etc] from tablename
[where condition];
([] 表示可选项)
----------------------------------------------
select语句中位于select关键词之后的列名用来决定那些列将作为查询结果返回。用户可以按照自己的需要选择任意列,还可以使用通配符“*”来设定返回表格中的所有列。
select语句中位于from关键词之后的表格名称用来决定将要进行查询操作的目标表格。
Select语句中的where可选从句用来规定哪些数据值或哪些行将被作为查询结果返回或显示。
在where条件从句中可以使用以下一些运算符来设定查询标准:
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
<> 不等于
除了上面所提到的运算符外,LIKE运算符在where条件从句中也非常重要。LIKE运算符的功能非常强大,通过使用LIKE运算符可以设定只选择与用户规定格式相同的记录。此外,我们还可以使用通配符“%”用来代替任何字符串。举例如下:
----------------------------------------------
select firstname, lastname, city
from employee
where firstname LIKE ‘E%’;
----------------------------------------------
(注意,字符串必须被包含在单括号内)
上述SQL语句将会查询所有名称以E开头的姓名。或者,通过如下语句:
----------------------------------------------
select * from employee
where firstname = ‘May’;
----------------------------------------------
查询所有名称为May的行。
四、向表格中添加、更新、删除记录
添加新记录:
SQL语言使用insert语句向数据库表格中插入或添加新的数据行。Insert语句的使用格式如下:
----------------------------------------------
insert into tablename
(first_column,...last_column)
values (first_value,...last_value);
----------------------------------------------
例如:
----------------------------------------------
insert into employee
(firstname, lastname, age, address, city)
values (‘Li’, ‘Ming’, 45, ‘No.77 Changan Road’, ‘Beijing”);
----------------------------------------------
简单来说,当向数据库表格中添加新记录时,在关键词insert into后面输入所要添加的表格名称,然后在括号中列出将要添加新值的列的名称。最后,在关键词values的后面按照前面输入的列的顺序对应的输入所有要添加的记录值。
更新记录:
SQL语言使用update语句更新或修改满足规定条件的现有记录。update语句的格式为:
----------------------------------------------
update tablename
set columnname = newvalue [, nextcolumn = newvalue2...]
where columnname OPERATOR value [and|or column OPERATOR value];
----------------------------------------------
例如:
----------------------------------------------
update employee
set age = age+1
where first_name= ‘Mary’and last_name= ‘Williams’;
----------------------------------------------
使用update语句时,关键一点就是要设定好用于进行判断的where条件从句。
删除记录:
SQL语言使用delete语句删除数据库表格中的行或记录。Delete语句的格式为:
----------------------------------------------
delete from tablename
where columnname OPERATOR value [and|or column OPERATOR value];
----------------------------------------------
例如:
----------------------------------------------
delete from employee
where lastname = May;
----------------------------------------------
简单来说,当需要删除某一行或某个记录时,在delete from关键词之后输入表格名称,然后在where从句中设定删除记录的判断条件。注意,如果用户在使用delete语句时不设定where从句,则表格中的所有记录将全部被删除。
五、删除数据库表格
删除表employee
----------------------------------------------
drop table employee;
----------------------------------------------
昨天为了这个事情纠结了一天,后来在百度知道上找到了答案,调试通过。发上来记录一下:
在SQL Server 2000 中加载驱动和URL路径的语句是
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";
而SQL Server 2005 中加载驱动和url的语句则为
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";
可以看出版本不同连接方法也是不同的。SQL Server有许多不同版本,看你用的是哪个了。
android系统已开始就注定是一个吃百家饭的系统。google生了他,也就是希望他能吃百家饭而茁壮成长。终于,在htc推出了g1,推出了magic以及遮遮掩掩的第三代android手机之后,各大厂商开始出击了。联想首先推出了中国移动的定制手机,虽然是android系统,但也定制了自己的界面。然后三星,索爱,连名不见经传的General Mobile都要出android机器了。反观iphone,只有苹果一家出品,他控制着屏幕的分辨率,控制着平衡感应,控制着sdk,就连itouch也只是一款没有电话功能的iphone而已。在苹果的控制下app store茁壮成长。开发人员如果不想开发电话相关功能的软件,他不用考虑用户使用的是iphone或者是itouch,不用考虑屏幕分辨率是否兼容,不用考虑硬件是否能够用。因为这一切就像一个规范一样,能够为开发者尽可能的提供便利。如果android由不同的厂商来做,就会有不同的硬件标准,这样开发起来一定会有所不同。这就是为什么wm做了这么多年,并没有发展的大规模的主要原因之一。
如果google能规定硬件标准,就另当别论了。至于google怎么做,就不是我们能考虑的了……