当前位置:编程学习 > JAVA >>

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 数组?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,