簡體   English   中英

使用帶有字符串的額外列將數據從一個Mysql表傳輸到另一個

[英]Transfer data from one Mysql table to another with an extra column having a string

我有一個名為register的Mysql表,我想用一個額外的列將所有詳細信息從register轉移到login表,該列具有自動生成的密碼。

這是我有自動生成密碼的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列生成了一個字母數字密碼,作為字符串“ passWord”,如何將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) {}
  }
}


}

這是我的登錄表的DDl

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
);

這是我的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的值更新登錄表中的PassWord列。請幫助我解決此問題。

使用它可以幫助您,

"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);

插入之前必須在兩個表中都匹配列名 ...按如下所示創建login表。Tr根據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

SQL小提琴

在此處輸入圖片說明

插入時,應將register的列號和名稱login匹配

另一件事,由於您的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+" ;

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

我將我的DAo方法updateClient(int id,String Password)更改為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM