2014-02-25 44 views
0

我有一個稱爲寄存器的Mysql表格,我想將所有的細節從register轉移到login表格中,並附帶一個自動生成密碼的列。將數據從一個Mysql表格傳輸到另一個具有字符串的列的另一列

這是我的Servlet在那裏我有自動生成的密碼:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String passWord=Long.toHexString(Double.doubleToLongBits(Math.random())); 
     System.out.println(passWord); 
     String Id=request.getParameter("id"); 
     int id=Integer.parseInt(Id); 
     AffiliateApproveService approve=new AffiliateApproveService(); 
     approve.affiliateApprove(id,passWord); 

    } 

在這裏,我已生成列密碼字符串「密碼」如何密碼分配到Password列字母數字密碼....

這是我的服務類:

public class AffiliateApproveService { 

    public void affiliateApprove(int id,String passWord) { 
     AffiliateApproveDAO cad=new AffiliateApproveDAO(); 
     DataSource dataSource=new DataSource(); 
     cad.setDataSource(dataSource); 
     cad.insertClient(id); 
     cad.updateClient(id, passWord); 
     cad.deleteClient(id); 

    } 

這是我的DAO:

public class AffiliateApproveDAO { 

     private DataSource dataSource; 
     public void setDataSource(DataSource dataSource) { 
     this.dataSource = dataSource; 
    } 
    Connection conn=null; 
    PreparedStatement statement=null; 
    ResultSet rs=null; 


    public void insertClient(int id) {  

     try{ 

      conn=dataSource.createConnection(); 
      PreparedStatement ps=conn.prepareStatement("insert into login(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); 
      ps.executeUpdate("insert into login (id, FirstName, LastName, Gender, Category, DateOfBirth, Age, Address, Country, State, city, PinCode, UserName, EmailId, ContactNo, MobileNo)select id, FirstName, LastName, Gender, Category, DateOfBirth, Age, Address, Country, State, city, PinCode, UserName, EmailId, ContactNo, MobileNo from register where id="+id+" "); 
      ps.setInt(1, id); 

} 
     catch (SQLException e) { 
      throw new RuntimeException(e); 

    } finally { 
      if (rs != null) try { rs.close(); } catch (SQLException ignore) {} 
     if (statement != null) try { statement.close(); } catch (SQLException ignore) {} 
     if (conn != null) try { conn.close(); } catch (SQLException ignore) {} 
    } 


    } 


    public void deleteClient(int id) { 
     try{ 
      conn=dataSource.createConnection(); 
      PreparedStatement ps1=conn.prepareStatement("delete from register where id="+id+""); 
      ps1.executeUpdate(); 
     } 
      catch (SQLException e) { 
       throw new RuntimeException(e); 

     } finally { 
       if (rs != null) try { rs.close(); } catch (SQLException ignore) {} 
      if (statement != null) try { statement.close(); } catch (SQLException ignore) {} 
      if (conn != null) try { conn.close(); } catch (SQLException ignore) {} 
     } 
    } 


public void updateClient(int id,String passWord){ 

    try{ 
     conn=dataSource.createConnection(); 
     PreparedStatement ps=conn.prepareStatement("UPDATE login set PassWord= "+passWord+" where id="+id+""); 
     ps.executeUpdate(); 
    } 
     catch (SQLException e) { 
      throw new RuntimeException(e); 

    } finally { 
      if (rs != null) try { rs.close(); } catch (SQLException ignore) {} 
     if (statement != null) try { statement.close(); } catch (SQLException ignore) {} 
     if (conn != null) try { conn.close(); } catch (SQLException ignore) {} 
    } 
} 


} 

這是我的登錄表

create table login(
id int(100) not null AUTO_INCREMENT primary key, 
FirstName varchar(300) default null, 
LastName varchar(300) default null, 
Gender varchar(200) default null, 
Category varchar(200) default null, 
DateOfBirth varchar(200) default null, 
Age int(7)default null, 
Address varchar(1000) default null, 
Country varchar(500) default null, 
State varchar (500) default null, 
city varchar(500)default null, 
PinCode int(10)default null, 
UserName varchar(100)default null, 
EmailId varchar(500)default null, 
ContactNo varchar(20) default null, 
MobileNo varchar(20) default null, 
TimeStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
PassWord varchar(100)null default null 
); 

器DD1,這是我對寄存器表的DDL:

create table register(
id int(100) not null AUTO_INCREMENT primary key, 
FirstName varchar(300) default null, 
LastName varchar(300) default null, 
Gender varchar(200) default null, 
Category varchar(200) default null, 
DateOfBirth varchar(200) default null, 
Age int(3)default null, 
Address varchar(1000) default null, 
Country varchar(500) default null, 
State varchar (500) default null, 
city varchar(500)default null, 
PinCode int(10)default null, 
UserName varchar(500)default null, 
EmailId varchar(500)default null, 
ContactNo varchar(20) default null, 
MobileNo varchar(20) default null, 
TimeStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
); 

現在我的問題是在updateClient()方法如何更新密碼登錄表中的變量passWord的值請幫助我解決此問題...謝謝你提前...

+1

你可以給所有的'login'表和'register'的細節表? – Andolasoft

+0

-pls發現這兩個表 – user3349720

+0

@ user3349720的DDLS你可以檢查我的答案 –

回答

0

謝謝你,我解決我的問題我自己:感謝ü所有幫助... ..

我改變了我的道法updateClient(INT ID,字符串密碼)爲:

try{ 
     conn=dataSource.createConnection(); 
     PreparedStatement ps=conn.prepareStatement("UPDATE login set PassWord= '"+passWord+"' where id="+id+""); 
     ps.executeUpdate(); 
    } 
0

使用此它會幫助你,

"insert into login 
(id, FirtName, LastName, Gender, Category, DateOfBirth, Age, Address, Country, State, city, PinCode, UserName, EmailId, ContactNo, MobileNo, PassWord) 
((select * from register where id="+id+" "),password); 
+0

- 在類型聲明executeUpdate方法(字符串,整數)不適用的參數(字符串, \t字符串) \t - 關於語法錯誤令牌「)」,刪除此令牌.........出現此錯誤 – user3349720

+0

嘗試刪除該。 – Shivam

+0

亞我刪除,但仍是其給人的SQL語法錯誤 – user3349720

0

你必須在兩個表中的列名相匹配插入之前......在創建login表作爲follows.TrChange列根據register

create table login(
id int(100) not null AUTO_INCREMENT primary key, 
FirstName varchar(300) default null, 
LastName varchar(300) default null, 
Gender varchar(200) default null, 
Category varchar(200) default null, 
DateOfBirth varchar(200) default null, 
Age int(7)default null, 
Address varchar(1000) default null, 
Country varchar(500) default null, 
State varchar (500) default null, 
city varchar(500)default null, 
PinCode int(10)default null, 
UserName varchar(100)default null, 
EmailId varchar(500)default null, 
ContactNo varchar(20) default null, 
MobileNo varchar(20) default null, 
TimeStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
PassWord varchar(100)null default null 
); 

INSERT INTO login 
SELECT *, 'passWord' as Password 
FROM register 
01位置

SQL Fiddle

enter image description here

+0

嘿,我試過,但密碼值不獲取插入,但只有串密碼是越來越插入....我要插入密碼的值..因爲我有汽車生成的密碼 – user3349720

+0

@ user3349720登記表中亙古不變的有列名像PassWord..So你必須手動插入 –

+0

要不嘗試更改密碼,口令爲varchar(100)在登錄表 –

0

你應該同時插入比賽數量和registerlogin列的名稱。

另一件事,因爲你的id字段設置爲自動增量無需插入到該列

insert into login 
(
FirtName, LastName, Gender, Category, DateOfBirth, Age, Address, Country, 
State, city, PinCode, UserName, EmailId, ContactNo, MobileNo, PassWord 
) 
select FirtName, LastName, Gender, Category, DateOfBirth, Age, Address, Country, 
    State, city, PinCode, UserName, EmailId, ContactNo, MobileNo, 'PassWord' from 
    register where id="+id+" ; 
相關問題