用的是MySQL数据库。
1,建一个userdb库,再建userinfo表,字 段:id(int),username(varchar),password(varchar)。
create database userdb;
use userdb;
create table userinfo(
id int(10) not null auto_increment,
username varchar(20),
password varchar(20),
primary key(id));create database userdb; use userdb; create table userinfo( id int(10) not null auto_increment, username varchar(20), password varchar(20), primary key(id));
2,DBConnection.java
package com.datainfo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
public static Connection getConnection() throws ClassNotFoundException,
SQLException {
Connection conn = null;
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/userdb";
String username = "root";
String password = "mysql";
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
return conn;
}
}package com.datainfo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBConnection { public static Connection getConnection() throws ClassNotFoundException, SQLException { Connection conn = null; String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/userdb"; String username = "root"; String password = "mysql"; Class.forName(driver); conn = DriverManager.getConnection(url, username, password); return conn; } }
3,User.java
package com.datainfo;
public class User {
private int id;
private String username;
private String password;
public User() {
}
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id
* the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the username
*/
public String getUsername() {
return username;
}
/**
* @param username
* the username to set
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password
* the password to set
*/
public void setPassword(String password) {
this.password = password;
}
}package com.datainfo; public class User { private int id; private String username; private String password; public User() { } /** * @return the id */ public int getId() { return id; } /** * @param id * the id to set */ public void setId(int id) { this.id = id; } /** * @return the username */ public String getUsername() { return username; } /** * @param username * the username to set */ public void setUsername(String username) { this.username = username; } /** * @return the password */ public String getPassword() { return password; } /** * @param password * the password to set */ public void setPassword(String password) { this.password = password; } }
4,UserDAO.java
package com.datainfo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import com.datainfo.DBConnection;
public class UserDAO {
public ArrayList getUserList() throws ClassNotFoundException, SQLException {
Connection conn = DBConnection.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from userinfo");
ArrayList userList = null;
try {
userList = new ArrayList();
while (rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
userList.add(user);
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return userList;
}
public void addUser(User user) throws ClassNotFoundException, SQLException {
Connection conn = DBConnection.getConnection();
String sql = "insert into userinfo (username,password) values (?,?)";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void updataUser(User user) throws ClassNotFoundException,
SQLException {
Connection conn = DBConnection.getConnection();
String sql = "update userinfo set username=?,password=? where id=?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
pstmt.setInt(3, user.getId());
pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void deleteUser(User user) throws ClassNotFoundException,
SQLException {
Connection conn = DBConnection.getConnection();
String sql = "delete from userinfo where id =?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, user.getId());
pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}package com.datainfo; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import com.datainfo.DBConnection; public class UserDAO { public ArrayList getUserList() throws ClassNotFoundException, SQLException { Connection conn = DBConnection.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select * from userinfo"); ArrayList userList = null; try { userList = new ArrayList(); while (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); userList.add(user); } rs.close(); stmt.close(); conn.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return userList; } public void addUser(User user) throws ClassNotFoundException, SQLException { Connection conn = DBConnection.getConnection(); String sql = "insert into userinfo (username,password) values (?,?)"; try { PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, user.getUsername()); pstmt.setString(2, user.getPassword()); pstmt.executeUpdate(); pstmt.close(); conn.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void updataUser(User user) throws ClassNotFoundException, SQLException { Connection conn = DBConnection.getConnection(); String sql = "update userinfo set username=?,password=? where id=?"; try { PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, user.getUsername()); pstmt.setString(2, user.getPassword()); pstmt.setInt(3, user.getId()); pstmt.executeUpdate(); pstmt.close(); conn.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void deleteUser(User user) throws ClassNotFoundException, SQLException { Connection conn = DBConnection.getConnection(); String sql = "delete from userinfo where id =?"; try { PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, user.getId()); pstmt.executeUpdate(); pstmt.close(); conn.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
5,配置文件remoting-config.xml
class="flex.messaging.services.remoting.adapters.JavaAdapter"
default="true" />
com.datainfo.UserDAO
<?xml version="1.0" encoding="UTF-8"?> com.datainfo.UserDAO
6,以下是flex端,UserFlex.as
package com.flex
{
[Bindable]
[RemoteClass(alias="com.datainfo.User")]
public class UserFlex
{
// public function UserFlex{
//
// }
public var id:int;
public var username:String;
public var password:String;
// 如果用private,就需要写上get/set
//
// public function get id():int{
// return this.id;
// }
// public function set id():int{
// this.id = id;
// }
//
// public function get username():String{
// return this.username;
// }
// public function set username():String{
// this.username = username;
// }
//
// public function get password():String{
// return this.password;
// }
// public function set password():String{
// this.password = password;
// }
}
}package com.flex { [Bindable] [RemoteClass(alias="com.datainfo.User")] public class UserFlex { //public function UserFlex{ // //} public var id:int; public var username:String; public var password:String; //如果用private,就需要写上get/set // //public function get id():int{ //return this.id; //} //public function set id():int{ //this.id = id; //} // //public function get username():String{ //return this.username; //} //public function set username():String{ //this.username = username; //} // //public function get password():String{ //return this.password; //} //public function set password():String{ //this.password = password; //} } }
7,自定义的DataGrid组件,用以双击修改数据DoubleClickDataGrid.as
package com.flex
{
import flash.events.MouseEvent;
import mx.controls.DataGrid;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.controls.listClasses.IDropInListItemRenderer;
import mx.controls.listClasses.IListItemRenderer;
import mx.core.EventPriority;
import mx.events.DataGridEvent;
public class DoubleClickDataGrid extends DataGrid
{
public function DoubleClickDataGrid()
{
//TODO: implement function
super();
doubleClickEnabled = true;
}
override protected function mouseDoubleClickHandler(event:MouseEvent):void
{
var dataGridEvent:DataGridEvent;
var r:IListItemRenderer;
var dgColumn:DataGridColumn;
r = mouseEventToItemRenderer(event);
if (r && r != itemEditorInstance)
{
var dilr:IDropInListItemRenderer = IDropInListItemRenderer(r);
if (columns[dilr.listData.columnIndex].editable)
{
dgColumn = columns[dilr.listData.columnIndex];
dataGridEvent = new DataGridEvent(DataGridEvent.ITEM_EDIT_BEGINNING, false, true);
// ITEM_EDIT events are cancelable
dataGridEvent.columnIndex = dilr.listData.columnIndex;
dataGridEvent.dataField = dgColumn.dataField;
dataGridEvent.rowIndex = dilr.listData.rowIndex + verticalScrollPosition;
dataGridEvent.itemRenderer = r;
dispatchEvent(dataGridEvent);
}
}
super.mouseDoubleClickHandler(event);
}
override protected function mouseUpHandler(event:MouseEvent):void
{
var r:IListItemRenderer;
var dgColumn:DataGridColumn;
r = mouseEventToItemRenderer(event);
if (r)
{
var dilr:IDropInListItemRenderer = IDropInListItemRenderer(r);
if (columns[dilr.listData.columnIndex].editable)
{
dgColumn = columns[dilr.listData.columnIndex];
dgColumn.editable = false;
}
}
super.mouseUpHandler(event);
if (dgColumn)
dgColumn.editable = true;
}
}
}package com.flex { import flash.events.MouseEvent; import mx.controls.DataGrid; import mx.controls.dataGridClasses.DataGridColumn; import mx.controls.listClasses.IDropInListItemRenderer; import mx.controls.listClasses.IListItemRenderer; import mx.core.EventPriority; import mx.events.DataGridEvent; public class DoubleClickDataGrid extends DataGrid { public function DoubleClickDataGrid() { //TODO: implement function super(); doubleClickEnabled = true; } override protected function mouseDoubleClickHandler(event:MouseEvent):void { var dataGridEvent:DataGridEvent; var r:IListItemRenderer; var dgColumn:DataGridColumn; r = mouseEventToItemRenderer(event); if (r && r != itemEditorInstance) { var dilr:IDropInListItemRenderer = IDropInListItemRenderer(r); if (columns[dilr.listData.columnIndex].editable) { dgColumn = columns[dilr.listData.columnIndex]; dataGridEvent = new DataGridEvent(DataGridEvent.ITEM_EDIT_BEGINNING, false, true); // ITEM_EDIT events are cancelable dataGridEvent.columnIndex = dilr.listData.columnIndex; dataGridEvent.dataField = dgColumn.dataField; dataGridEvent.rowIndex = dilr.listData.rowIndex + verticalScrollPosition; dataGridEvent.itemRenderer = r; dispatchEvent(dataGridEvent); } } super.mouseDoubleClickHandler(event); } override protected function mouseUpHandler(event:MouseEvent):void { var r:IListItemRenderer; var dgColumn:DataGridColumn; r = mouseEventToItemRenderer(event); if (r) { var dilr:IDropInListItemRenderer = IDropInListItemRenderer(r); if (columns[dilr.listData.columnIndex].editable) { dgColumn = columns[dilr.listData.columnIndex]; dgColumn.editable = false; } } super.mouseUpHandler(event); if (dgColumn) dgColumn.editable = true; } } }
8,页面显示,testflex.mxml
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:locdg="com.flex.*"
creationComplete="initApp()"
minWidth="955" minHeight="600">
<?xml version="1.0" encoding="utf-8"?>