① 如何用Eclipse查询数据库表中的一行数据
java">比较简单的方法:
数据库连接:DBhelper.java
packagetest;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclassDBhelper{
//500
privateStatementstmt;//语句对象(发送SQL语句)
privateConnectionconn;//数据库连接
privateResultSetrs;
publicDBhelper(){//构造方法在创建对象的时候执行
try{
Stringurl="jdbc:mysql://localhost:3306/test";
Stringusername="root";
Stringpassword="admin";
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(url,username,password);//尝试连接成功得到连接
stmt=conn.createStatement();//创建语句对象
}catch(Exceptione){
e.printStackTrace();
}
}
//执行更新
//insertdeleteupdate
publicvoiddoUpdate(Stringsql){
try{
stmt.executeUpdate(sql);
}catch(Exceptione){
e.printStackTrace();
}
}
//执行查询
//select
publicResultSetdoQuery(Stringsql){
try{
rs=stmt.executeQuery(sql);
returnrs;
}catch(Exceptione){
e.printStackTrace();
}
returnnull;
}
publicvoidclose(){
try{
if(rs!=null)
rs.close();
}catch(SQLExceptione){
e.printStackTrace();
}
try{
if(stmt!=null)
stmt.close();
}catch(SQLExceptione){
e.printStackTrace();
}
try{
if(conn!=null)
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
}
测试文件:test.java
在main方法中加入如下代码:
DBhelper db = new DBhelper();//操作数据库的帮助类
ResultSet rs = db.doQuery(" select * from student" );//rs:结果集
//想单独查询一行,可以在SQL语句后添加限制条件where id=
try {
//从resultSet里把数据取出来,放入表格里
while( rs.next() ){//取结果集里下一条数据
System.out.print(" "+rs.getString("id"));
System.out.print(" "+rs.getString("name"));
System.out.print(" "+rs.getString("password"));
}
} catch (SQLException e) {
e.printStackTrace();
}
② java解析dbf格式时里面数据类型怎么判断
使用JDBC-ODBC桥接方式读取Access文件,使用Acces
与DBF都需要配置桥接模式,在控制面板里,选择管理工具里配置
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动
try{
//conn=DriverManager.getConnection(DB_URL);
conn=DriverManager.getConnection("jdbc:odbc:ss","test.dbf","");//无密码则空字符串
pstm=conn.prepareStatement("select*fromtest");//此处的XXB为DBF数据文件的名字
rs=pstm.executeQuery();
至此,完美解决DBF数据库文件读取。网上的东西,太杂了,所以,我们要理智判断,取其精华,去其糟粕,为我所用。
终于被我找到了!
完全free的: com/ 这个网站主要是做数据库连接中间介的,其中用到了一个他们自己开发的叫做JDBF的项目,该项目就是专门控制dbf文件的,整个包只有30K大小,你们随便用个工具反编译一下就可以看懂里面的代码,很简单,就是按照具体格式处理文件!(注意,不是使用JDBC连接的。)
不过我试了一下,发现只支持三中格式的:foxpro2.x、DBase IV、DBase III。
大家用得着的话可以去那里下载! 有问题的话可以再来问我。
我发现国外的这类开源网站很多,国内的就少得可怜了!唉!
③ 如何用Java实现把excel表中的数据导入到mysql数据库已有的表中
package com.cn.gao;
import java.util.List;
public class FromExcelToDb {
public static void main(String[] args) {
//得到表格中所有的数据
List<Stu> listExcel=StuService.getAllByExcel("d://book.xls");
/*//得到数据库表中所有的数据
List<Stu> listDb=StuService.getAllByDb();*/
DBhelper db=new DBhelper();
for (Stu stuEntity : listExcel) {
int id=stuEntity.getId();
if (!StuService.isExist(id)) {
//不存在就添加
String sql="insert into student (name,sex,num) values(?,?,?)";
String[] str=new String[]{stuEntity.getName(),stuEntity.getSex(),stuEntity.getNum()+""};
db.AddU(sql, str);
}else {
//存在就更新
String sql="update student set name=?,sex=?,num=? where id=?";
String[] str=new String[]{stuEntity.getName(),stuEntity.getSex(),stuEntity.getNum()+"",id+""};
db.AddU(sql, str);
}
}
System.out.println("数据更新成功!");
}
}
④ DBHelper在Java中是干什么的,怎样应用
看名字就是databasehelper,数据库助手的意思么,这本身就是一个类。
包含了数据库连接,关闭,如果有拓展的话 可能包含基本的数据库JDBC操作方法也就是简化增删改查的一些方法。然后,就没有然后了。。。
如果需要的话 网络搜索下就有了,很多改良版本看需求吧。
一般说来 .NET里面才叫DBHelper,JAVA里面叫做BaseDao
⑤ JAVA数据库连接失败
publicstaticvoidmain(String[]args){
try
{
if(conn!=null)
{
System.out.println("数据库连接正常");
}
else
{
System.out.println("数据库连接异常");
}
}
catch(Exceptionex)
{
ex.printStackTrace();
}
}
这里conn没有初始化吧,
Connection conn =newDBHelper ().getConnection();
⑥ java的DBHelper类有没有这样的功能
public ResultSet getResultSet(String sql,Object[] object)
{
if(con==null)
{
this.getConnection();
}
try {
pstmt=con.prepareStatement(sql);
for(int i=0;i<object.length;i++)
{
pstmt.setObject(i+1, object[i]);
}
rs=pstmt.executeQuery();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return rs;
}
如果还有什么疑问.. 请网络Hi我.. 我会进一步的为你解答..
⑦ java是怎么连接mysql数据库的
java连接mysql数据库的步骤如下:
首先要下载mysql-connection-java-5.0.16-bin.jar这个jar包(版本不一致没关系),然后在工程中导入该库文件。
然后写一个类(DBHelper)用来打开或关闭数据库:
package com.hu.demo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DBHelper {
public static final String url = "jdbc:mysql://127.0.0.1/student";
public static final String name = "com.mysql.jdbc.Driver";
public static final String user = "root";
public static final String password = "root";
public Connection conn = null;
public PreparedStatement pst = null;
public DBHelper(String sql) {
try {
Class.forName(name);//指定连接类型
conn = DriverManager.getConnection(url, user, password);//获取连接
pst = conn.prepareStatement(sql);//准备执行语句
} catch (Exception e) {
e.printStackTrace();
}
}
public void close() {
try {
this.conn.close();
this.pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
最后再写一个Demo类来执行相关查询操作:
package com.hu.demo;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Demo {
static String sql = null;
static DBHelper db1 = null;
static ResultSet ret = null;
public static void main(String[] args) {
sql = "select *from stuinfo";//SQL语句
db1 = new DBHelper(sql);//创建DBHelper对象
try {
ret = db1.pst.executeQuery();//执行语句,得到结果集
while (ret.next()) {
String uid = ret.getString(1);
String ufname = ret.getString(2);
String ulname = ret.getString(3);
String udate = ret.getString(4);
System.out.println(uid + "\t" + ufname + "\t" + ulname + "\t" + udate );
}//显示数据
ret.close();
db1.close();//关闭连接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
这样就完成了mysql数据库的连接了。
⑧ java数据库增加数据,怎么在控制台输出表中的数据总数啊
把String sql="select * from student" 这条语句代码换成
String sql="select count(*) from student"就可以得到学生表所有记录数,
然后在test方法里添加一个局部变量int rec=0;
执行完sql语句后输出后用rec接收表的记录数
接下来用 Object recontu = getObject(int columnIndex);
然后把recountu转换成int类型并用rec接收,再调用System.out.println()进行输出
⑨ android程序数据库问题... DBHelper helper = new DBHelper(this, DB_NAME, null, VERSION); 不懂啊
这里用ContentProvider方法来定义数据库。。
public class AlarmProvider extends ContentProvider //
{
private static final String DB_NAME = "Alarm.db"; //数据库名
private static final int DB_VERSION = 1;//版本号,当程序第一次运行时,数据库被建立,如果
//你更改了数据库,如增加一个表,这时,这个值一般要改一下,这样程序再次安装运行
//时,数据库可自行升级。。如果不改通常要手动删除数据库。。
private static final String ALARM_TABLE_NAME = "alarm"; //一个表名
private static final int ALARM = 1; //与表对应的整数值,相当于id
private static UriMatcher mUriMathcer; //Uri匹配器,建立uri,表名,id三者之间的关系,如下:
static{
mUriMathcer = new UriMatcher(UriMatcher.NO_MATCH);
mUriMathcer.addURI(AlarmInfo.AUTH, "alarm", ALARM);
}
private interface CreateTableInterface //表创建接口
{
public abstract void createAlarmTable(SQLiteDatabase db);
}
//内部类,数据库助手类,并实现表创建接口
private static class DatabaseHelper extends SQLiteOpenHelper implements CreateTableInterface
{
CreateTableInterface mCreateTableInterface = this;
Context mContext = null;
//构造函数,该函数调用后,数据库没有
//创建。。也就是下面的onCreate不会在它调用后就立即调用创建db
public DatabaseHelper(Context context)
{
super(context, DB_NAME, null, DB_VERSION);
// Log.i(TAG, "DatabaseHelper be called!");
mContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) //这个方法只在第一次db连接创建db时调用,只一次
{
//create db table
mCreateTableInterface.createAlarmTable(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) //db升级时调用
{
// Log.i(TAG, "onUpgrade() be called!");
db.execSQL("DROP TABLE IF EXISTS "+ALARM_TABLE_NAME);
onCreate(db);
}
@Override
public void createAlarmTable(SQLiteDatabase db)
{
// 创建表
db.execSQL("CREATE TABLE "+ALARM_TABLE_NAME+" ("
+AlarmInfo._ID+" INTEGER PRIMARY KEY,"
+AlarmInfo._LABEL+" TEXT NOT NULL,"
+AlarmInfo._TIME+" TEXT NOT NULL,"
+AlarmInfo._ALERT+" TEXT NOT NULL,"
+AlarmInfo._REPEAT+" TEXT NOT NULL,"
+AlarmInfo._ACTIVE+" TEXT NOT NULL"
+");");
//在表中插入一些数据。。。
db.execSQL("INSERT INTO "+ALARM_TABLE_NAME+"("+AlarmInfo._LABEL+","
+AlarmInfo._TIME+","+AlarmInfo._ALERT+","
+AlarmInfo._REPEAT+","+AlarmInfo._ACTIVE+
") VALUES('Lunch Alarm','11 : 45 AM','"+Tag.TONE+"','"+Tag.EVERY_DAY+"','false');");
db.execSQL("INSERT INTO "+ALARM_TABLE_NAME+"("+AlarmInfo._LABEL+","
+AlarmInfo._TIME+","+AlarmInfo._ALERT+","
+AlarmInfo._REPEAT+","+AlarmInfo._ACTIVE
+") VALUES('Work Alarm','08 : 45 AM','"+Tag.TONE+"',"+"'Mon,Tue,Wed,Thu,Fri'"
+",'false');");
db.execSQL("INSERT INTO "+ALARM_TABLE_NAME+"("+AlarmInfo._LABEL+","
+AlarmInfo._TIME+","+AlarmInfo._ALERT+","+AlarmInfo._REPEAT+","
+AlarmInfo._ACTIVE
+") VALUES('Work Alarm','09 : 00 AM','"+Tag.TONE+"',"
+"'"+Tag.WEEKENDS+"','false');");
db.execSQL("INSERT INTO "+ALARM_TABLE_NAME+"("+AlarmInfo._LABEL+","
+AlarmInfo._TIME+","+AlarmInfo._ALERT+","+AlarmInfo._REPEAT+","
+AlarmInfo._ACTIVE
+") VALUES('Yoga','10 : 15 PM','"+Tag.TONE+"',"+"'Sun,Wed','false');");
}
}
}
private DatabaseHelper mDatabaseHelper; //定义helper
//以下重写insert,delete,update,query等方法
@Override
public synchronized int delete(Uri uri, String selection, String[] selectionArgs)
{
SQLiteDatabase db = null;
boolean success = false;
int count = 0;
try{
db = mDatabaseHelper.getWritableDatabase();
db.acquireReference();
success = true;
switch(mUriMathcer.match(uri)){
case ALARM:
count = db.delete(ALARM_TABLE_NAME, selection, selectionArgs);
break;
}
}catch(SQLException e){
e.printStackTrace();
}finally{
if(success == true){
db.releaseReference();
}
}
return count;
}
@Override
public String getType(Uri uri)
{
switch(mUriMathcer.match(uri)){
case ALARM:
return AlarmInfo.CONTENT_TYPE;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
}
@Override
public synchronized Uri insert(Uri uri, ContentValues initValues)
{
SQLiteDatabase mSQLiteDatabase = null;
boolean success = false;
try{
mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();
mSQLiteDatabase.acquireReference();
success = true;
long mRowId;
ContentValues values;
if(initValues == null){
values = new ContentValues();
}else{
values = initValues;
}
switch(mUriMathcer.match(uri)){
case ALARM:
mRowId = mSQLiteDatabase.insert(ALARM_TABLE_NAME,
AlarmInfo._ID, values);
if(mRowId > 0){
return uri;
}else{
throw new SQLException("Failed to insert to "+uri);
}
}
}catch(SQLException e){
e.printStackTrace();
}finally{
if(success == true)
mSQLiteDatabase.releaseReference();
}
return null;
}
@Override
public boolean onCreate()
{
// Log.i("alarm provider", "onCreate()...");
mDatabaseHelper = new DatabaseHelper(getContext());
return true;
}
@Override
public synchronized Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder)
{
SQLiteQueryBuilder mSQLiteQueryBuilder = new SQLiteQueryBuilder();
switch(mUriMathcer.match(uri)){
case ALARM:
mSQLiteQueryBuilder.setTables(ALARM_TABLE_NAME);
break;
}
SQLiteDatabase mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();
mSQLiteDatabase.acquireReference();
Cursor mCursor = mSQLiteQueryBuilder.query(mSQLiteDatabase, projection,
selection, selectionArgs, null, null, sortOrder);
mSQLiteDatabase.releaseReference();
return mCursor;
}
@Override
public synchronized int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs)
{
SQLiteDatabase mSQLiteDatabase = null;
int count = 0;
boolean success = false;
try{
mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();
mSQLiteDatabase.acquireReference();
success = true;
switch(mUriMathcer.match(uri)){
case ALARM:
count = mSQLiteDatabase.update(ALARM_TABLE_NAME, values,
selection, selectionArgs);
break;
default:
break;
}
}catch(SQLException e){
e.printStackTrace();
}finally{
if(success == true)
mSQLiteDatabase.releaseReference();
}
return count;
}
}
可以参考android alarm源码,query,update等方法写法基本不改什么,只替换表名。或增加一个case.
⑩ java登录模块验证出现问题求解答
前期准备
首先要先明确有个大体的思路,要实现什么样的功能,了解完成整个模块要运用到哪些方面的知识,以及从做的过程中去发现自己的不足。技术方面的进步大都都需要从实践中出来的。
功能:用户注册功能+系统登录功能+生成验证码
知识:窗体设计、数据库设计、JavaBean封装属性、JDBC实现对数据库的连接、验证码(包括彩色验证码)生成技术,还有就些比如像使用正则表达式校验用户注册信息、随机获得字符串、对文本可用字符数的控制等
设计的模块预览图:
使用BoxLayout布局,将控件排列方式设置从上至下:
复制代码代码如下:
contentPane.setLayout(new BoxLayout(contentPane,BoxLayout.PAGE_AXIS));
窗体使用了标签、文本域、密码域和按钮等控件
实现代码:
public class login extends JFrame{
private static final long serialVersionUID = -4655235896173916415L;
private JPanel contentPane;
private JTextField usernameTextField;
private JPasswordField passwordField;
private JTextField validateTextField;
private String randomText;
public static void main(String args[]){
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Throwable e) {
e.printStackTrace();
}
EventQueue.invokeLater(new Runnable(){
public void run(){
try{
login frame=new login();
frame.setVisible(true);
}catch(Exception e){
e.printStackTrace();
}
}
});
}
public login(){
setTitle("系统登录");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane=new JPanel();
setContentPane(contentPane);
contentPane.setLayout(new BoxLayout(contentPane,BoxLayout.PAGE_AXIS));
JPanel usernamePanel=new JPanel();
contentPane.add(usernamePanel);
JLabel usernameLable=new JLabel("u7528u6237u540DuFF1A");
usernameLable.setFont(new Font("微软雅黑", Font.PLAIN, 15));
usernamePanel.add(usernameLable);
usernameTextField=new JTextField();
usernameTextField.setFont(new Font("微软雅黑", Font.PLAIN, 15));
usernamePanel.add(usernameTextField);
usernameTextField.setColumns(10);
JPanel passwordPanel = new JPanel();
contentPane.add(passwordPanel);
JLabel passwordLabel = new JLabel("u5BC6 u7801uFF1A");
passwordLabel.setFont(new Font("微软雅黑", Font.PLAIN, 15));
passwordPanel.add(passwordLabel);
passwordField = new JPasswordField();
passwordField.setColumns(10);
passwordField.setFont(new Font("微软雅黑", Font.PLAIN, 15));
passwordPanel.add(passwordField);
JPanel validatePanel = new JPanel();
contentPane.add(validatePanel);
JLabel validateLabel = new JLabel("u9A8Cu8BC1u7801uFF1A");
validateLabel.setFont(new Font("微软雅黑", Font.PLAIN, 15));
validatePanel.add(validateLabel);
validateTextField = new JTextField();
validateTextField.setFont(new Font("微软雅黑", Font.PLAIN, 15));
validatePanel.add(validateTextField);
validateTextField.setColumns(5);
randomText = RandomStringUtils.randomAlphanumeric(4);
CAPTCHALabel label = new CAPTCHALabel(randomText);//随机验证码
label.setFont(new Font("微软雅黑", Font.PLAIN, 15));
validatePanel.add(label);
JPanel buttonPanel=new JPanel();
contentPane.add(buttonPanel);
JButton submitButton=new JButton("登录");
submitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
do_submitButton_actionPerformed(e);
}
});
submitButton.setFont(new Font("微软雅黑", Font.PLAIN, 15));
buttonPanel.add(submitButton);
JButton cancelButton=new JButton("退出");
cancelButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
do_cancelButton_actionPerformed(e);
}
});
cancelButton.setFont(new Font("微软雅黑",Font.PLAIN,15));
buttonPanel.add(cancelButton);
pack();// 自动调整窗体大小
setLocation(com.lixiyu.util.SwingUtil.centreContainer(getSize()));// 让窗体居中显示
}
窗体居中显示:
public class SwingUtil {
/*
* 根据容器的大小,计算居中显示时左上角坐标
*
* @return 容器左上角坐标
*/
public static Point centreContainer(Dimension size) {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();// 获得屏幕大小
int x = (screenSize.width - size.width) / 2;// 计算左上角的x坐标
int y = (screenSize.height - size.height) / 2;// 计算左上角的y坐标
return new Point(x, y);// 返回左上角坐标
}
}
1.2获取及绘制验证码
public class CAPTCHALabel extends JLabel {
private static final long serialVersionUID = -963570191302793615L;
private String text;// 用于保存生成验证图片的字符串
public CAPTCHALabel(String text) {
this.text = text;
setPreferredSize(new Dimension(60, 36));// 设置标签的大小
}
@Override
public void paint(Graphics g) {
super.paint(g);// 调用父类的构造方法
g.setFont(new Font("微软雅黑", Font.PLAIN, 16));// 设置字体
g.drawString(text, 5, 25);// 绘制字符串
}
}
*彩色验证码:
public class ColorfulCAPTCHALabel extends JLabel {
private static final long serialVersionUID = -963570191302793615L;
private String text;// 用于保存生成验证图片的字符串
private Color[] colors = { Color.BLACK, Color.BLUE, Color.CYAN, Color.DARK_GRAY, Color.GRAY, Color.GREEN, Color.LIGHT_GRAY, Color.MAGENTA, Color.ORANGE,
Color.PINK, Color.RED, Color.WHITE, Color.YELLOW };// 定义画笔颜色数组
public ColorfulCAPTCHALabel(String text) {
this.text = text;
setPreferredSize(new Dimension(60, 36));// 设置标签的大小
}
@Override
public void paint(Graphics g) {
super.paint(g);// 调用父类的构造方法
g.setFont(new Font("微软雅黑", Font.PLAIN, 16));// 设置字体
for (int i = 0; i < text.length(); i++) {
g.setColor(colors[RandomUtils.nextInt(colors.length)]);
g.drawString("" + text.charAt(i), 5 + i * 13, 25);// 绘制字符串
}
}
}
1