JAVA问题,谁能告诉我这段代码是设置什么内容的
package mobile;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import db.DataBase;
public class SendMsg extends HttpServlet {
private static final long serialVersionUID = 1L;
public SendMsg() {
super();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
DataBase db = new DataBase();
ResultSet sqlrs = null;
ResultSet sqlrst = null;
ResultSet sqlrst1 = null;
String strSQL = null;
String msg = null; //发送短信内容
strSQL = "SELECT * FROM message";
String strSQL1 = "SELECT * FROM msgcon";
int count = 0; //发送人员的个数
int i = 0; //初始化手机号数组时的位置变量
sqlrs = db.executeQuery(strSQL);
sqlrs.last();
count = sqlrs.getRow();
sqlrs.close();
System.out.println(count);
String[] list1 = new String[count];
sqlrst = db.executeQuery(strSQL);
while (sqlrst.next()) {
//msgbean data = new msgbean();
//data.setId(sqlrst.getInt("id"));
//data.setName(sqlrst.getString("name"));
//data.setPhonenum(sqlrst.getString("phoneNum"));
// list.add(data);
list1[i]=sqlrst.getString("phoneNum");
i++;
}
sqlrst.close();
sqlrst1 = db.executeQuery(strSQL1);
while (sqlrst1.next()) {
msg = sqlrst1.getString("msgcon");
}
sqlrst1.close();
Serial serial = new Serial(msg);
serial.sendmessage(list1);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
补充:最好详细一点,好的话我可以加分~
追问:sqlrs.last();
count = sqlrs.getRow();
这句话上面的部分都是初始化是吗,然后这句再确认有多少个手机号码,是吗
最后一句话是不是就是定义新的手机号码,然后重复上面的过程继续发送
这是不是就是个群发程序?
答案:这是谁写的代码,太烂了,不但低效而且逻辑错误!
我只分析下面的代码,其它的代码不用我解释了吧,如果不明白,建议还是好好看看Java相关教程吧!
strSQL = "SELECT * FROM message"; //定义从message表中查询所有记录的SQL语句
String strSQL1 = "SELECT * FROM msgcon"; //定义从msgcon表中查询所有记录的SQL语句
int count = 0; //发送人员的个数
int i = 0; //初始化手机号数组时的位置变量
sqlrs = db.executeQuery(strSQL); //执行SQL语句,从message表中查询所有记录到记录集变量sqlrs,
sqlrs.last(); //把记录集的记录指针移动到最后一条记录,以便于下面sqlrs.getRow()可以得到总记录数。
count = sqlrs.getRow(); //得到总记录数
sqlrs.close(); //关闭记录集(晕,即然下面还要用到此记录集,为什么要关闭,后面还要再查一次数据库,效率太低了,这里可以直接用sqlrs.first();指向记录集起始处)
System.out.println(count); //在控制台显示记录数
String[] list1 = new String[count]; //根据总记录数,定义一个string数组
sqlrst = db.executeQuery(strSQL); //这里又查一遍数据库,可以删除
while (sqlrst.next()) { //循环记录集sqlrst中的每一条记录
//msgbean data = new msgbean();
//data.setId(sqlrst.getInt("id"));
//data.setName(sqlrst.getString("name"));
//data.setPhonenum(sqlrst.getString("phoneNum"));
// list.add(data);
list1[i]=sqlrst.getString("phoneNum"); //取出当前记录的电话号码,存到数组中
i++; //增加数组的索引
}
sqlrst.close(); //关闭记录集
sqlrst1 = db.executeQuery(strSQL1); //执行SQL语句,从msgcon表中查询所有记录到记录集变量sqlrst1,
while (sqlrst1.next()) { // 循环记录集sqlrst1中的每一条记录
msg = sqlrst1.getString("msgcon"); // 从当前记录中取出"msgcon"字段的值,保存到变量msg中。(这里逻辑有问题,因为每次取出的"msgcon"字段的值都会替换掉上一次msg变量中的值,所以最终只会取出最后一条记录的值,不明白这里想要干什么)
}
sqlrst1.close(); //关闭记录集
Serial serial = new Serial(msg); //定义一个Serial类的对象实例,Serial类可能是用来发送消息的(msg应该是消息内容或连接方式)
serial.sendmessage(list1); //调用serial对象的sendmessage方法发送消息到数组中的所有手机
其他:将某信内容通过serial 接口发送到多个电话号中
sqlrs.last();
count = sqlrs.getRow();
用于获取记录条数,不过不是一个好的方法
String[] list1 = new String[count];
list1[i]=sqlrst.getString("phoneNum");
说明list1里是电话号码
sqlrst1 = db.executeQuery(strSQL1);
msg = sqlrst1.getString("msgcon");
执行sql获取短信内容
Serial serial = new Serial(msg);
serial.sendmessage(list1);
定义Serial对象,并通过sendmessage方法将内容发送到多个电话中
上一个:C++、JAVA简单 问题《求解》
下一个:java 中怎么样把char 数组arr[] 中的字符转化一个int 数组?