① 如何用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