PDA

View Full Version : سوال: نوشتن تابع insert در برنامه



hafez1
سه شنبه 09 تیر 1394, 18:56 عصر
سلام دوستان.
من یه برنامه با jsp نوشتم که یه تابع داره برای لاگین کردن ویکی برای افزودن کاربر.
این تابع کلی :

public int insert(String query) throws SQLException {
Statement st = connection.createStatement();
int result=st.executeUpdate(query);
System.out.println(">>>" + query);
return result;


}


و این هم تابع اضافه کردن کاربر به پایگاه داده:

public static String register(String userName,String pass,String address,String mobile,String email,String fname,String lname,String city,String id,String sexuality,String confirmpass,JJDatabaseWeb db)throws SQLException
{
String sql = "INSERT INTO " + tableName + " VALUES( '" + userName + "','" + pass + "','" + email +"','" + mobile + "','" + address + "','" + fname + "','" + lname + "','" + sexuality + "','" + city + "','" + confirmpass +"');";
int result=db.insert(sql);
if(result!=0)
{
System.out.println("register Ok for " + userName + " " + pass);
return "با موفقیت اضافه شد" + userName;
}
else {
System.out.println("register fail for " + userName + " " + pass);
return "";
}
}

جالب اینجاست که چاپ میکنه مثلا عضویت شما با موفقیت انجام شد a ولی توی پایگاه داده چیزی اضافه نشده .
مشکل کجاست؟

azimi.moja
چهارشنبه 10 تیر 1394, 00:06 صبح
سلام. دوست عزیز کد خیلی نا مفهوم. البته ارز SQLException هم به صورت Try و Catch استفاده نکردی برای همین نمیشه با دقت کامل گفت. البته مدل طراحی (ساختار طراحی) هم بنظرم زیاد منطقی نیست مگر فقط جهت آموزش باشه.

hafez1
چهارشنبه 10 تیر 1394, 01:19 صبح
بله در حد آموزشه.
من یه کلاس User_info دارم که شامل دوتا تابع validate و register هست که به ترتیب برای لاگین و ثبت نام استفاده میشن.
برنامه یه صفحه اچ تی ام ال داره که کاربر میاد برای ثبت نام اطلاعاتشو وارد میکنه.بدش یه سرولت به نام سرور نوشتم که توش یه متد post داریم که میاد اطلاعاتی که کاربر وارد کرده رو یکی یکی در میاره و میریزه توی پارامترای مربوطه.بدش همینجا متد register صدا زده میشه.
یه چیز دیگه اینکه ما یه کلاس دیگه به نام JJDatabase هم داریم که توش توابعی که نیاز داریم مثل آپدیت رو نوشتیم.
کدای JJDatabase :

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package helper;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


/**
*
* @author MrSalesi
*/
public class JJDatabaseWeb {


private Connection connection;
private static JJDatabaseWeb accessor;


private JJDatabaseWeb() throws SQLException {
try {
// Class.forName(JdbcOdbcDriver.class.getName());
// connection = DriverManager.getConnection("Jdbc:Odbc:flashDatabase");
//--- or next line :
// String myDB = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=d:\\nemoone1.accdb";
// connection = DriverManager.getConnection(myDB, "", "");
//++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_my_test?characterSetResults=UTF-8&characterEncoding=UTF-8&useUnicode=yes", "root", "m12345");
//or
//connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysqlDatabase?useUnicode=true&characterEncoding=ut f-8", "root", "");
//++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++
System.out.println("database driver name is ok");
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
}


public static synchronized JJDatabaseWeb getInstance() throws SQLException {
if (accessor == null) {
accessor = new JJDatabaseWeb();
}
return accessor;
}


public String validate(String userName, String password) throws SQLException {
// this method return nickname if user is valid
PreparedStatement ps = connection.prepareStatement(
"select * from user_info where user_info_userName = ? and user_info_pass = ? ");
ps.setString(1, userName);
ps.setString(2, password);
ResultSet result = ps.executeQuery();
if (result.next()) {
return "خوش آمدید " + userName;
} else {
return "کاربر مورد نظر یافت نشد";
}
}


public void executeThisQuery(String query) throws SQLException {
Statement st = connection.createStatement();
st.executeUpdate(query);
System.out.println(">>>" + query);


}
public int insert(String query) throws SQLException {
Statement st = connection.createStatement();
int result=st.executeUpdate(query);
System.out.println(">>>" + query);
return result;


}


public void close() throws SQLException {
connection.close();
System.out.println("Database connection is closed ...");
}


public ResultSet select(String SQl) throws SQLException {
System.out.println(SQl);
// this method return nickname if user is valid
PreparedStatement ps = connection.prepareStatement(SQl);
ResultSet result = ps.executeQuery();
while (result.next()) {
System.out.println(result.getString(1) + " , " + result.getString(2) + " , " + result.getString(3) + " , " + result.getString(4));
}
return result;
}


public void selectShow(String SQl) throws SQLException {
System.out.println(SQl);
// this method return nickname if user is valid
PreparedStatement ps = connection.prepareStatement(SQl);


ResultSet result = ps.executeQuery();
while (result.next()) {
System.out.println(result.getString(1) + " , " + result.getString(2) + " , " + result.getString(3) + " , " + result.getString(4));
}
}


public static void main(String[] args) throws SQLException {
JJDatabaseWeb db = JJDatabaseWeb.getInstance();
// UserInfo user1 = new UserInfo();
// user1 = dbase.validate("b", "b");
// System.out.println("--------------- hi dear '" + user1.name + "'");
// System.out.println("--------------- ");
//.................................................. .
db.selectShow("SELECT * FROM user_info ;");
user_info.validate("ali", "123", db);
//.................................................. .
// db.executeThisQuery("UPDATE user_info SET user_userName ='ali' WHERE id = 1");
db.close();
}
}



کدای User_info:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package helper;


import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


/**
*
* @author MrSalesi
*/
public class user_info {


public static final String tableName = "user_info";
public static String _id = "id";
public static String _userName = "user_info_userName";
public static String _password = "user_info_pass";
public static String _password2 = "user_info_pass2";
public static String _email = "user_info_email";
public static String _mobile = "user_info_mobile";
public static String _address = "user_info_address";
public static String _fname = "user_info_fname";
public static String _lname = "user_info_lname";
public static String _sexuality = "user_info_sexuality";
public static String _city = "user_info_city";


public static String validate(String userName, String pass, JJDatabaseWeb db) throws SQLException {
// this method return nickname if user is valid
String sql = "SELECT * FROM " + tableName + " WHERE "+_email+" = '"+ userName + "' AND " + _password + " = '" + pass + "';";
ResultSet result = db.select(sql);
System.out.println("------------------------------");
result.first();
System.out.println(result.getRow());
System.out.println("-------------------------------");
if (result.getRow()>0) {
System.out.println("login Ok for " + userName + " " + pass);
return "خوش آمدید " + userName;
// return userName;
} else {
System.out.println("login fail for " + userName + " " + pass);
return "";
}
}
public static String register(String userName,String pass,String mobile,String address,String email,String fname,String lname,String city,String sexuality,JJDatabaseWeb db)throws SQLException
{
String sql = "INSERT INTO " + tableName + " VALUES( '" + userName + "','" + pass + "','" + email +"','" + mobile + "','" + address + "','" + fname + "','" + lname + "','" + sexuality + "','" + city + "');";
System.out.println("منم خوبم");
int result=db.insert(sql);
if(result!=0)
{
System.out.println("register Ok for " + userName + " " + pass);
return "با موفقیت اضافه شد" + userName;
}
else {
System.out.println("register fail for " + userName + " " + pass);
return "";
}
}
}


کدای server

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package servlets;


import helper.JJDatabaseWeb;
import helper.user_info;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.catalina.connector.Request;


/**
*
* @author a
*/
public class Server extends HttpServlet {


@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter pw = response.getWriter();
String userEmail = request.getParameter("user_info_email");
String pass = request.getParameter(user_info._password);
//access to data base and get some result++++++++++++++++++++++++++++
JJDatabaseWeb db;
try {
db = JJDatabaseWeb.getInstance();//اتصال به دیتابیس را برقرار کن
String result = user_info.validate(userEmail, pass,db);

if (!result.equals("")) {
userEmail = userEmail;
} else {
userEmail = "غیر مجاز";
}
} catch (SQLException ex) {
ex.printStackTrace();
}
//++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++
pw.print("<html><body>hello dear " + userEmail + "</body></html>");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
System.out.println("--------doPost()");
PrintWriter pw = response.getWriter();
String userName = request.getParameter(user_info._userName);
String pass = request.getParameter(user_info._password);
String address=request.getParameter(user_info._address);
String email=request.getParameter(user_info._email);
String mobile=request.getParameter(user_info._mobile);
String fname=request.getParameter(user_info._fname);
String lname=request.getParameter(user_info._lname);
String city=request.getParameter(user_info._city);
// String id=request.getParameter(user_info._id);
String sexuality=request.getParameter(user_info._sexualit y);
String confirmpass=request.getParameter(user_info._passwo rd2);
JJDatabaseWeb db;
if(pass==confirmpass){
try {
db = JJDatabaseWeb.getInstance();//اتصال به دیتابیس را برقرار کن
// String result =
user_info.register(userName, pass,email,mobile,address,fname,lname,city,sexuali ty,db);
/* if (!result.equals(""))
userName=userName;
else
userName = "غیر مجاز";
*/

} catch (SQLException ex) {
ex.printStackTrace();
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++
pw.print("<html><body>عضویت شما با موفقیت انجام شد " + userName + "</body></html>");

}
}