SQLSERVER 表A某列数据插入B表

strong text
例如:
表tableA:
A B C D E F --列名
1 2 3 4 5 6

1 7 9 8 5 6
1 10 11 12 5 6
表tableB:
H I J k L M --列名

我想把taleA 表中的BCD列数据提取出来 插入tableB 中 HIJ三列中形成新的一条数据。由于tableA中数据比较多,我想循环搜索和插入,请教如何实现。

suannai0314
鹳狸媛 楼主的这个问题解决了么?下边的答案能解决问题么?如果可以麻烦点击答案旁的√采纳哦~如果没有也可以将自己的答案贴上然后进行采纳的。
6 年多之前 回复

1个回答

insert
into tableB(H,I,J)
select B,C,D
from tableA
where ....

我没理解错吧

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
sqlserver 把一张表数据插入另一张表数据
两张表 table1 A,B两列,table2 A,B 两列 , table1数据是table2部分,现在table2 是完全的表,table1只有A列有数据,现在要根据A列把A列数据相同的B列值从table2更新到table1中去,怎么写语句?
SQLSERVER数据同步过程中,数据库急速,异常膨胀!
两台服务器A,B上的sqlserver需要同步两个表的数据,B中的某两张表数据要保持和A中的一样,第三方系统会没5分钟想A中插入一些新的数据。 这里我采用了快照方式在A中发布要同步的两张表的数据,没两分钟更新一次快照,在服务器B上订阅A发布的数据。数据同步看起来都是没问题的,B中会得到A的新数据,可是一个月不到,B中对应的数据库文件竟然已经从原来的1G多一点的样子达到100+G,几乎要超过磁盘的最大容量,而我看A中的数据库文件大小只有几十G而已。 观察复制检测器,发现1、当磁盘将满时候出现错误:数据库“**”事务日志已满。同时在服务器B上查同步的两张表的数据,任何数据都查不到(包括以前已经同步好了的)。 2、两张表一次可能只会新添几十个数据,而在监视器上看,它好像每次都会复制数万个,即,每一次同步好像都要将所有的数据插一遍。 观察磁盘大小变化发现,每过几分钟就磁盘就上1M可用空间。 请问各位大神,能不能告诉在下这事怎么回事,以及该怎么解决呢。
SQLServer服务器之间数据提交
现在有两个SQL server服务器 A和B,从A服务器上抽出的对象数据放到A服务器的tmp表里, 然后再把tmp表里的数据插入到B服务器上的xxx表,可以确定tmp表里是有数据的,但是最后的数据更新结果是B服务器上的xxx表里没有数据,已经发生很多次了,但是还不知道原因,不知道哪位大神了解这是什么情况,指点一二。先谢谢了! 补充:这是一个JOB里的存储过程,如果再执行一次JOB就没问题了,服务器之间数据传送有数据量多少的设置么?还有B是A的一个link服务器
SqlServer三表字段自增,使用同一流水编号
简而言之就是三个表,都为自增,ID是自增,例如A表记录+1,ID=1,后面B表ID自增则为2,依次,A表的第二条记录(即A表1记录,B表1记录)后的,使用同一流水号,实现起来因为数据实在太多,如果每次插入数据都要查询三表的最大值就太耗时了,或者..写个方法直接每次三表任意一插数据的时候就执行方法给某字段值+1?然后每次取..?不知道可行不,追求功能效率
sql server 2008 数据同步疑难问题
Q: 服务器一:有server 2008 主机名:A 用户名:sa 密码:sa1 数据库:xixiDB 数据库表:testXixi 服务器二:有server 2008 主机名:B 用户名:sa 密码:sa2 数据库:zijingangDB 数据库表:testZijingang 现在要在A上 对表testXixi插入数据后,B上的表testZijingang马上同步得到A插入的数据,反之,B更新数据,A马上同步得到数据,如果发生断网的情况,当网络正常后马上同步数据,请问如何实现呢,数据库必须是2008版本的。 请写出详细的步骤 谢谢
请教一个插入的sql语句!
task表中现有数据: pid id parentid name start finish 2000 5743 0 2000年数据1 2009-8-27 2009-8-27 2000 5744 5743 2000年数据2 2009-8-27 2009-8-29 sequence表中: type 2744 当我需要插入这样的新数据时(比如是2009年8月28号插入的): 子件号 父件号 周期 2001年数据1 1天 2001年数据2 2001年数据1 4天 该怎么实现才能插入上面的新数据后task表中的数据如下: pid id parentid name start finish 2000 5743 0 2000年数据1 2009-8-27 2009-8-27 2000 5744 5743 2000年数据2 2009-8-27 2009-8-27 2001 5745 0 2001年数据1 2009-8-28 2009-8-29 2001 5746 5745 2001年数据2 2009-8-28 2009-9-1 2001的id号是取sequence表type+1,然后将后面的数据id值依次变成新值,请教! [b]问题补充:[/b] 谢谢关注,三个回复: 1. 我用的数据库是sqlserver2000 2. 数据库中与start和finish的类型是日期型(也就是date). 3.数据是从数据库里另一个表获得的。 [b]问题补充:[/b] 请教各位高手! [b]问题补充:[/b] 可是id和parentid怎么写sql语句才能实现呢? [b]问题补充:[/b] 十分感谢你的回复,有个问题请教一下:我将id+1后,这时候要改变parentuid的值,是根据什么条件呢? update parentuid=id from task where name='2001年数据1' 可我是一万条数据的插入?会不会在效率上太差了? [b]问题补充:[/b] 谢谢你提供的思路,那如果我一次插入一万条数据,在task上建立name的索引,能达到比较好的效率吗?
winform:使用log4net向SqlServer2008R2中插入自定义字段的问题
配置文件App.config <?xml version="1.0"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <logger name="logInfo"> <level value="INFO" /> <appender-ref ref="InfoAppender" /> <!--<appender-ref ref="ErrorInfo" /> <appender-ref ref="AdoNetAppender_SqlServer" />--> </logger> <appender name="InfoAppender" type="log4net.Appender.AdoNetAppender"> <bufferSize value="1"/> <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089"/> <connectionString value="Data Source=.;Initial Catalog=TMDB;User ID=sa;Password=pass@word1"/> <commandText value="INSERT INTO logData ([ID],[logTime],[userID],[moduleId],[opeaterContent],[remark]) VALUES (@ID, @logTime, @userID, @moduleId,@opeaterContent, @remark)"/> <parameter> <parameterName value="@ID" /> <dbType value="String" /> <size value="50" /> <layout type="Log4ToSqlServer.MyLogDataBaseLayout"> <conversionPattern value="%Id" /> </layout> </parameter> <parameter> <parameterName value="@logTime" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value="@userID" /> <dbType value="String" /> <size value="50" /> <layout type="Log4ToSqlServer.MyLogDataBaseLayout"> <conversionPattern value="%UserId" /> </layout> </parameter> <paramter> <parameterName value="@moduleId" /> <dbType value="String" /> <size value="50" /> <layout type="Log4ToSqlServer.MyLogDataBaseLayout"> <conversionPattern value="%ModuleId" /> </layout> </paramter> <parameter> <parameterName value="@opeaterContent" /> <dbType value="String" /> <size value="500" /> <layout type="Log4ToSqlServer.MyLogDataBaseLayout"> <conversionPattern value="%OpeaterContent" /> </layout> </parameter> <parameter> <parameterName value="@remark" /> <dbType value="String" /> <size value="200" /> <layout type="Log4ToSqlServer.MyLogDataBaseLayout"> <conversionPattern value="%Remark" /> </layout> </parameter> </appender> </log4net> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> </startup> </configuration> 自定义Layout和Convert如下所示: namespace Log4ToSqlServer { public class MyLogDataBaseLayout : PatternLayout { public MyLogDataBaseLayout() { this.AddConverter("Id", typeof(IdPatternConverter)); this.AddConverter("UserId", typeof(UserIdPatternConverter)); this.AddConverter("ModuleId", typeof(ModuleIdPatternConverter)); this.AddConverter("OpeaterContent", typeof(OpeaterContentPatternConverter)); this.AddConverter("Remark", typeof(RemarkPatternConverter)); } } public class IdPatternConverter : PatternLayoutConverter { protected override void Convert(TextWriter writer, LoggingEvent loggingEvent) { var messageLog = loggingEvent.MessageObject as LogMessage; if (messageLog != null) { writer.Write(messageLog.Id); } } } public class UserIdPatternConverter : PatternLayoutConverter { protected override void Convert(TextWriter writer, LoggingEvent loggingEvent) { var messageLog = loggingEvent.MessageObject as LogMessage; if (messageLog != null) { writer.Write(messageLog.UserId); } } } public class ModuleIdPatternConverter : PatternLayoutConverter { protected override void Convert(TextWriter writer, LoggingEvent loggingEvent) { var messageLog = loggingEvent.MessageObject as LogMessage; if (messageLog != null) { writer.Write(messageLog.ModuleId); } } } public class OpeaterContentPatternConverter : PatternLayoutConverter { protected override void Convert(TextWriter writer, LoggingEvent loggingEvent) { var messageLog = loggingEvent.MessageObject as LogMessage; if (messageLog != null) { writer.Write(messageLog.OpeaterContent); } } } public class RemarkPatternConverter : PatternLayoutConverter { protected override void Convert(TextWriter writer, LoggingEvent loggingEvent) { var messageLog = loggingEvent.MessageObject as LogMessage; if (messageLog != null) { writer.Write(messageLog.Remark); } } } } 对Log4Net进行了一下简单封装: public class Log4NetHelper { public static readonly log4net.ILog logInfo = log4net.LogManager.GetLogger("logInfo"); public static void WriteDatebaseLog(LogMessage logData) { if (logInfo.IsInfoEnabled) { logInfo.Info(logData); } } public static void WriteDatebaseLogTest(LogContent logData) { if (logInfo.IsInfoEnabled) { logInfo.Info(logData); } } } 调用方法: LogMessage logdata = new LogMessage(); logdata.Id = Guid.NewGuid().ToString(); logdata.UserId = "03d17e47-d657-4eae-b7e2-b40d13e4530d"; logdata.ModuleId = "0c83c755-09d9-4c3a-ae2e-a42155c4cf1f"; logdata.OpeaterContent = DateTime.Now.ToString() + "OperationContent"; logdata.Remark = DateTime.Now.ToString() + "remark"; //LogContent log = new LogContent(); //log.Event_Type = 1; Log4NetHelper.WriteDatebaseLog(logdata); 在AssemblyInfo.cs中添加:[assembly: log4net.Config.XmlConfigurator(Watch=true)] 项目使用的是.net 4.0,log4net.dll使用的1.2.11.0。 数据表创建SQL: CREATE TABLE [dbo].[logData]( [ID] [varchar](50) NOT NULL, [logTime] [datetime] NULL, [userID] [varchar](50) NULL, [moduleId] [varchar](50) NULL, [opeaterContent] [nvarchar](500) NULL, [remark] [nvarchar](200) NULL, CONSTRAINT [PK_LOGDATA] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] 现在的问题是不提示结果也插不进数据,跪求大神指点。。。
SQLServer中如何判断一条记录不能存在并使用其他值代替?
![图片说明](https://img-ask.csdn.net/upload/201506/09/1433817799_681367.png) 现有表tableA,tableB。tableA有一列为bid,是通过该列跟tableB中的一行记录关联 。 一个存储过程中的语句如下,作用是获取A表中的一些信息,并通过bid获取与其关联的 tableB中的某一行的信息。(另外,tableB中会有一个aid的列,通过该列和tableA中的一条记录对应,一条talbeA中的记录可以对应tableB中多条记录,以最后更新的那条tableB记录为绑定) select tableA.no, talbeA.total, tableB.s1, tableB.s2 from tableA,table B where tableA.bid=tableB.bid 但这样执行的话,若tableA.bid这一条记录在talbeB中不存在,则筛选不出数据来。 现在我希望改成,若tableA.bid不存在,则从tableB中找出aid=tableA.aid的最后一条记录替换给到tableA.bid(id是按1的增量标识插入)。然后再作 select tableA.no, talbeA.total, tableB.s1, tableB.s2 from tableA,table B where tableA.bid=tableB.bid这功能
servlet 怎么把数据库查到的东西传到HTML中
下面是我写的,不知道该怎么改了。。 package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Date; public class Servlet1 extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取客户端发送的请求类型:GET/POST doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String responseBody = "Current request method is <B>:" + request.getMethod() + "</B> <br>" + new Date(); // 将所有HTML响应数据通过网络回发到客户端。 // 获取发送响应的PrintWriter对象 PrintWriter out = response.getWriter(); // 装在需要响应到客户端的响应数据 out.println(responseBody); try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //注册JDBC驱动 Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=Stu_Man","sa","13361775956"); //链接数据库 System.out.println("连接成功!"); //如果连接成功,控制台输出“连接成功!” //查询数据 String str2= "select Course.couid,counam, coutimes, couroom, courtea from Course,Student,Score where stunam ='张三' and Student.stuid=Score.stuid and Score.couid=Course.couid"; Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(str2); response.setContentType("text/html;charset=utf-8"); while (rs.next()) { String a = rs.getString("couid"); String b = rs.getString("counam"); String c = rs.getString("coutimes"); String d = rs.getString("couroom"); String e = rs.getString("courtea"); out.print("<td><input type=\"checkbox\" name=\"id\" value=\""+a+"\"></td>"); out.print("<td>"+b+"</td>"); out.print("<td>"+c+"</td>"); out.print("<td>"+d+"</td>"); out.print("<td>"+e+"</td>"); out.print("</tr>"); } out.print("</table></center>"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); //插入数据 String str1 = "insert into Student values(107,'王九','男','95-05-02','技术4')"; Statement stm = con.createStatement(); int res= stm.executeUpdate(str1); if (res > 0) { System.out.println("数据已成功插入!"); } //删除数据 PreparedStatement p = null; try { String str3 = "delete from Student where stunam ='王' "; p = con.prepareStatement(str3); int row = p.executeUpdate(); System.out.println("成功删除了"+row+"行数据!"); } catch (SQLException sqlE) { sqlE.printStackTrace(); } if (rs != null) { con.close(); //释放资源 } } catch (SQLException e) { // e.printStackTrace(); System.out.println("数据执行错误!"); } catch(Exception e) { System.out.println("连接失败!"); } // 发送响应 out.close(); } }
求一条sqlserver2000的sql语句?
要求是这样的:我的表的主键(cid)是char8 类型的 具体格式是 30200001 也就是302是固定的 后面是一个序列好 这种情况下我在程序中每插入一条数据都要 select max(cid) from 表名 ;然后再把前面的302截取掉,在把后面的序列转化成number型 再加上1然后再toString(),还有判断是否够8位,如果不够的话中间补0 ,用着特别复杂,还效率低下。 各位大哥看看有其他的办法没有? 我的想法是能不能写一个sql语句直接返回下一个要添加的cid 我在程序中就方便多了, 小弟在此谢过了…… [b]问题补充:[/b] 大哥,可不可以提供个示例呀? [b]问题补充:[/b] 数据库设计的缺陷,这个我也知道,因为这个数据库是别人设计的,我这边没法改变,pJun (中级程序员)大哥说的很有道理,可是这样也会有一种问题的产生,就是当cid(后面那部分)的值没有达到5位数时,还要判断一次,也就是还要去补零呀!这个问题怎么解决呀? 谢谢各位了……
jdbc执行SqlServer存储过程时 成功后返回结果集,执行失败后 return值的问题
最近遇到一个存储过程,由于接口不是很规范,由于执行成功和执行失败返回的结果不一致,求大神帮忙解答,只有这点c币了,全部奉上,贴代码; ``` CREATE PROCEDURE [dbo].[proc_phone_gh] ( @p_id char(12), --patient_id 患者ID @unit_sn varchar(7), --office_id 挂号科室编号 @request_date varchar(10), --czdate 挂号日期 @ampm char(1), --ampm 上/下午 @clinic_type varchar(2), --card_code 号源种类 @doctor_sn varchar(5), --doctor_id 医生编号,普通号可为空 @sequence smallint, --gh_sequence 就诊顺序号,手机app自行计算 @app_order varchar(30), --app_order 预约码 @app_type char(1) --cretificate_type 方式:1手机APP/2微信 ) AS declare @msg varchar(50), @record_sn int, @group_sn varchar(7), @mz_dept_no varchar(2), @opera varchar(5), @times int, @req_type varchar(2) , @gh_sequence smallint , @ledger_sn varchar(20) set @group_sn='' set @req_type='15' --挂号途径 13 手机app set @mz_dept_no='1' --是否是分院 begin transaction update mz_patient_mi set max_times= max_times+1 where patient_id=@p_id if @@error<>0 begin set @msg = '更新mz_patient_mi表失败' select @msg return_msg rollback transaction return 0 end set @times=(select max_times from mz_patient_mi where patient_id=@p_id) set @ledger_sn =(select max_ledger_sn from mz_patient_mi where patient_id=@p_id) begin select top 1 @record_sn =record_sn ,@gh_sequence=gh_sequence from gh_schedule where 1=1 and request_date=@request_date and ampm=@ampm and unit_sn=@unit_sn and isnull(doctor_sn,'') = @doctor_sn and clinic_type like @clinic_type and charindex('15',visit_req_type)>0 --挂号方式 and status_flag='0' order by abs(gh_sequence) insert into gh_appointment_external (app_order,name,sex,social_no,phone,gh_sequence,reg_time,request_date,visit_dept,doctor_code,ampm,clinic_type,req_type ,status,patient_id,times,phone2, source_type,import_date,import_opera,gh_record_sn,certificate_type) select @app_order,name,sex,social_no,home_tel as phone,@gh_sequence as gh_sequence,convert(varchar(20),getdate(),120) as reg_time,@request_date ,@unit_sn,case when isnull(@doctor_sn,'')='' then '-1' else @doctor_sn end as doctor_code,@ampm,@clinic_type,@req_type as req_type,'0' as status ,@p_id,@times,'00000000','手机App预约挂号' as source_type,convert(varchar(20),getdate(),120) as import_date,'' as import_opera,@record_sn as gh_record_sn,case when @app_type='1' then '2' when @app_type='2' then '3' end from view_mz_patient_mi where patient_id=@p_id if @@error<>0 or @@ROWCOUNT<1 begin set @msg='插入预约登记表gh_appointment_register失败!' select @msg return_msg rollback transaction return 0 end update gh_schedule set status_flag='1',req_type=@req_type where record_sn=@record_sn and gh_sequence=@gh_sequence and request_date=CONVERT(varchar(20), @request_date, 120 ) and unit_sn=@unit_sn and isnull(group_sn,'')=@group_sn and clinic_type =@clinic_type and isnull(ampm,'')=@ampm and charindex(@req_type,visit_req_type)>0 and mz_dept_no=@mz_dept_no if @@error<>0 or @@ROWCOUNT<1 begin set @msg = '更新gh_schedule表失败' select @msg return_msg rollback transaction return 0 end commit transaction end select isnull((select name from gh_zd_appointment_place where code =convert(varchar(7),@unit_sn)),(select comment from zd_unit_code where code =convert(varchar(7),@unit_sn))) as address,substring(convert(varchar,@request_date,120),1,11) +' '+ convert(varchar (20),dz_time1)+'至'+convert(varchar(20),dz_time2) as mtime , @gh_sequence xh ,@times times,@ledger_sn checkOuts from --gh_zd_appointment_place a, encounter_time h,gh_zd_clinic_type_query b where b.zj_flag *=h.charge_type and h.end_no>=@gh_sequence and h.begin_no<=@gh_sequence and h.ampm=convert(varchar(10),@ampm) and b.code=convert(char(10),@clinic_type) ``` 1.预约成功时返回最下面的一个结果集 ``` select isnull((select name from gh_zd_appointment_place where code =convert(varchar(7),@unit_sn)),(select comment from zd_unit_code where code =convert(varchar(7),@unit_sn))) as address,substring(convert(varchar,@request_date,120),1,11) +' '+ convert(varchar (20),dz_time1)+'至'+convert(varchar(20),dz_time2) as mtime , @gh_sequence xh ,@times times,@ledger_sn checkOuts from --gh_zd_appointment_place a, encounter_time h,gh_zd_clinic_type_query b where b.zj_flag *=h.charge_type and h.end_no>=@gh_sequence and h.begin_no<=@gh_sequence and h.ampm=convert(varchar(10),@ampm) and b.code=convert(char(10),@clinic_type) ``` 2.执行失败时,返回return值,和return_msg信息; 3.jdbc代码如下: String storedProc = "{call proc_phone_gh(?,?,?,?,?,?,?,?,?)}"; CallableStatement cs = con.prepareCall(storedProc); cs.setString(1, (String)proParams[0]); cs.setString(2, (String)proParams[1]); cs.setString(3, (String)proParams[2]); cs.setString(4, (String)proParams[3]); cs.setString(5, (String)proParams[4]); cs.setString(6, (String)proParams[5]); cs.setInt(7, (Integer)proParams[6]); cs.setString(8, (String)proParams[7]); cs.setString(9, (String)proParams[8]); ResultSet rs = cs.executeQuery(); ``` 执行到ResultSet rs = cs.executeQuery();时,报异常:该语句没有结果集,该语句在数据库里可以执行也可以得到结果集。 请问各位大神们,如何获取到成功的结果集 和失败时的return值和return_msg???????????在线等,求助!!!!!!!!!!!!!! ```
hibernate的ID生成策略(native报错)
[code="java"] <class name="com.tech.model.Event" table="EVENTS"> <id name="id" column="EVENT_ID" type="long" unsaved-value="null"> <generator class="native"/> </id> <property name="date" type="timestamp" column="EVENT_DATE"/> <property name="title" column="EVENT_TITLE"/> </class>[/code] 我用native的话就这样. [java] 09:59:58,576 DEBUG JDBCExceptionReporter:69 - could not insert: [com.tech.model.Event] [insert into EVENTS (EVENT_ID, EVENT_DATE, EVENT_TITLE) values (null, ?, ?)] [java] java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]无法将 NULL 值插入列 'EVENT_ID',表 'test.dbo.EVENTS';该列不允许空值。INSERT 失败。 我换 increment 这个生成策略就没错... [b]问题补充:[/b] 1楼说的答案我试了..我把ID类型都改成 INT .数据库也改成INT.但是还是报这个错误...
java.lang.NullPointerException
package ch12; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; @SuppressWarnings("serial") public class adminUser extends JFrame implements ActionListener { JMenuBar menu; JMenu me, me1, me2, me3, me4; JMenuItem item, item3, item4, item5, item6, item7; JMenuItem item8, item9, item10, item11, item12, item13, item14; JMenuItem item15, item16, item17, item18, item19, item21; JMenuItem item22, item23; JLabel hintLabel; JTextField inputNumber; Object name[] = { "部门编号" }; Object a[][] = new Object[1][1]; JTable table; JButton enterModify; JLabel hintLabel3; JTextField inputNumber3; Object name3[] = { "工龄等级", "技术等级" }; Object a3[][] = new Object[1][2]; JTable table3; JButton enterModify3; JLabel hintLabel4; JTextField inputnum4; Object name4[] = { "出勤类别", "系数" }; Object a4[][] = new Object[1][2]; JTable table4; JButton enter4; JLabel hintLabel5; JTextField inputnum5; Object name5[] = { "津贴类别", "津贴款数" }; Object a5[][] = new Object[1][2]; JTable table5; JButton enter5; JLabel hintLabel6; JTextField inputnum6; Object name6[] = { "款数" }; Object a6[][] = new Object[1][1]; JTable table6; JButton enter6; JLabel hintLabel7; JTextField inputnum7; Object name7[] = { "款数" }; Object a7[][] = new Object[1][1]; JTable table7; JButton enter7; JLabel hintLabel8; Object name8[] = { "员工号", "姓名", "性别", "出生日期(格式日/月/年)", "文化程度", "民族", "籍贯", "地址", "人员级别", "部门编号", "技术等级"}; Object a8[][] = new Object[1][11]; JTable table8; JButton enterInsert8; JLabel hintLabel9; Object name9[] = { "员工号", "出勤类别号", "出勤天数" }; Object a9[][] = new Object[1][3]; JTable table9; JButton enterInsert9; JLabel hintLabel10; Object name10[] = { "员工号", "津贴类别号" }; Object a10[][] = new Object[1][2]; JTable table10; JButton enterInsert10; JLabel hintLabel11; Object name11[] = { "出勤编号", "出勤类别", "计算系数" }; Object a11[][] = new Object[1][3]; JTable table11; JButton enterInsert11; JLabel hintLabel12; Object name12[] = { "津贴编号", "津贴名称", "款数" }; Object a12[][] = new Object[1][3]; JTable table12; JButton enterInsert12; JLabel hintLabel13; Object name13[] = { "工龄等级", "款数" }; Object a13[][] = new Object[1][2]; JTable table13; JButton enterInsert13; JLabel hintLabel14; Object name14[] = { "职务等级", "款数" }; Object a14[][] = new Object[1][2]; JTable table14; JButton enterInsert14; JLabel hintLabel15; Object name15[] = { "员工编号", "出勤信息", "出勤天数", "计算系数" }; Object a15[][] = new Object[1][4]; JTable table15; JButton enterInsert15; JLabel hintLabel16; Object name16[] ={ "员工编号", "津贴款数", "津贴信息" }; Object a16[][] = new Object[1][3]; JTable table16; JButton enterInsert16; JLabel hintLabel17; Object name17[] = { "员工编号", "基本工资" }; Object a17[][] = new Object[1][2]; JTable table17; JButton enterInsert17; JLabel jl18; JTextField jtf18; JButton jb18; Object a18[][] = new Object[1][14]; Object name18[] = { "职工编号", "基本工资", "岗位津贴", "物价补贴", "住房补贴", "日班费", "夜班费", "假期加班", "房租", "病假扣款", "事假扣款", "旷工扣款", "其他扣款", "实发工资" }; JTable table18; JButton jj19; JTextField jt19; Object a19[][] = new Object[1][2]; Object name19[] = { "员工编号", "工资" }; JTable table19; Object a20[][] = new Object[1][2]; Object name20[] = { "部门工资", "部门编号" }; JTable table20; JLabel hintLabel21; JTextField inputNumber21; JButton jb21; JButton jj22, jb22; JTextField jt22, jl22; Object a22[][] = new Object[1][3]; Object name22[] = { "员工编号", "出勤编号", "天数" }; JTable table22; JButton jj23, jb23; JTextField jt23, jl23; Object a23[][] = new Object[1][2]; Object name23[] = { "员工编号", "津贴" }; JTable table23; JPanel jp; Connection con; Statement sql, sql1; ResultSet rs, rs1; String num; CallableStatement cstmt = null; adminUser() { this.setTitle("管理员用户"); menu = new JMenuBar(); me = new JMenu("修改"); me1 = new JMenu("添加信息"); me2 = new JMenu("显示"); me3 = new JMenu("统计"); me4 = new JMenu("删除"); item = new JMenuItem("职工部门"); item3 = new JMenuItem("职工基本工资信息"); item4 = new JMenuItem("出勤信息"); item5 = new JMenuItem("津贴信息"); item6 = new JMenuItem("工龄——工资"); item7 = new JMenuItem("职务——工资"); item8 = new JMenuItem("职工信息"); item9 = new JMenuItem("职工出勤情况"); item10 = new JMenuItem("职工津贴信息"); item11 = new JMenuItem("出勤信息"); item12 = new JMenuItem("津贴信息"); item13 = new JMenuItem("工龄——工资"); item14 = new JMenuItem("职务——工资"); item15 = new JMenuItem("职工出勤情况"); item16 = new JMenuItem("职工津贴信息"); item17 = new JMenuItem("职工基本工资信息"); item18 = new JMenuItem("职工工资"); item19 = new JMenuItem("部门工资"); // item20 = new JMenuItem("总厂工资"); item21 = new JMenuItem("职工信息"); item22 = new JMenuItem("职工出勤信息"); item23 = new JMenuItem("职工津贴信息"); item.addActionListener(this); item3.addActionListener(this); item4.addActionListener(this); item5.addActionListener(this); item6.addActionListener(this); item7.addActionListener(this); item8.addActionListener(this); item9.addActionListener(this); item10.addActionListener(this); item11.addActionListener(this); item12.addActionListener(this); item13.addActionListener(this); item14.addActionListener(this); item15.addActionListener(this); item16.addActionListener(this); item17.addActionListener(this); item18.addActionListener(this); item19.addActionListener(this); // item20.addActionListener(this); item21.addActionListener(this); item22.addActionListener(this); item23.addActionListener(this); me.add(item); me.add(item3); me.add(item4); me.add(item5); me.add(item6); me.add(item7); me1.add(item8); me1.add(item9); me1.add(item10); me1.add(item11); me1.add(item12); me1.add(item13); me1.add(item14); me2.add(item15); me2.add(item16); me2.add(item17); me3.add(item18); me3.add(item19); // me3.add(item20); me4.add(item21); me4.add(item22); me4.add(item23); menu.add(me); menu.add(me1); menu.add(me2); menu.add(me3); menu.add(me4); this.setJMenuBar(menu); this.setVisible(true); this.setSize(400,300); Dimension d = this.getToolkit().getScreenSize(); this.setLocation((d.width - this.getWidth())/2, (d.height - this.getHeight())/2-100); //this.setBounds(10, 10, 200, 200); this.validate(); this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } public void actionPerformed(ActionEvent e) { //修改职工部门 if (e.getSource() == item) { this.getContentPane().removeAll(); jp = new JPanel(); hintLabel = new JLabel("输入员工编号(回车确认):"); inputNumber = new JTextField(40); table = new JTable(a, name); enterModify = new JButton("更新记录"); jp.setLayout(null); Box baseBox = Box.createHorizontalBox(); baseBox.add(hintLabel); baseBox.add(inputNumber); baseBox.add(new JScrollPane(table)); baseBox.add(enterModify); jp.add(baseBox); baseBox.setBounds(10, 40, 550, 38); this.add(jp); inputNumber.addActionListener(this); enterModify.addActionListener(this); setBounds(20, 60, 600, 200); this.validate(); } //修改 职工基本工资信息 else if (e.getSource() == item3) { this.getContentPane().removeAll(); jp = new JPanel(); hintLabel3 = new JLabel("输入员工编号(回车确认):"); inputNumber3 = new JTextField(20); table3 = new JTable(a3, name3); enterModify3 = new JButton("更新记录"); jp.setLayout(null); Box baseBox = Box.createHorizontalBox(); baseBox.add(hintLabel3); baseBox.add(inputNumber3); baseBox.add(new JScrollPane(table3)); baseBox.add(enterModify3); jp.add(baseBox); baseBox.setBounds(10, 40, 550, 38); this.add(jp); inputNumber3.addActionListener(this); enterModify3.addActionListener(this); this.validate(); } //修改 出勤信息 else if (e.getSource() == item4) { this.getContentPane().removeAll(); jp = new JPanel(); hintLabel4 = new JLabel("输入类别号(回车确认)"); inputnum4 = new JTextField(20); table4 = new JTable(a4, name4); enter4 = new JButton("更新记录"); jp.setLayout(null); Box basebox = Box.createHorizontalBox(); basebox.add(hintLabel4); basebox.add(inputnum4); basebox.add(new JScrollPane(table4)); basebox.add(enter4); jp.add(basebox); basebox.setBounds(10, 40, 550, 38); this.add(jp); setBounds(20, 60, 700, 200); this.validate(); inputnum4.addActionListener(this); enter4.addActionListener(this); } //修改 津贴信息 else if (e.getSource() == item5) { this.getContentPane().removeAll(); jp = new JPanel(); hintLabel5 = new JLabel("输入类别号(回车确认)"); inputnum5 = new JTextField(20); table5 = new JTable(a5, name5); enter5 = new JButton("更新记录"); jp.setLayout(null); Box basebox = Box.createHorizontalBox(); basebox.add(hintLabel5); basebox.add(inputnum5); basebox.add(new JScrollPane(table5)); basebox.add(enter5); jp.add(basebox); basebox.setBounds(10, 40, 550, 38); this.add(jp); setBounds(20, 60, 700, 200); this.validate(); this.setVisible(true); inputnum5.addActionListener(this); enter5.addActionListener(this); } //修改 工龄——工资 else if (e.getSource() == item6) { this.getContentPane().removeAll(); jp = new JPanel(); hintLabel6 = new JLabel("输入工龄等级(回车确认)"); inputnum6 = new JTextField(20); table6 = new JTable(a6, name6); enter6 = new JButton("更新记录"); jp.setLayout(null); Box basebox = Box.createHorizontalBox(); basebox.add(hintLabel6); basebox.add(inputnum6); basebox.add(new JScrollPane(table6)); basebox.add(enter6); jp.add(basebox); basebox.setBounds(10, 40, 550, 38); this.add(jp); inputnum6.addActionListener(this); enter6.addActionListener(this); setBounds(20, 60, 700, 200); this.validate(); } //修改 职务——工资 else if (e.getSource() == item7) { this.getContentPane().removeAll(); jp = new JPanel(); hintLabel7 = new JLabel("输入职务等级(回车确认)"); inputnum7 = new JTextField(20); table7 = new JTable(a7, name7); enter7 = new JButton("更新记录"); jp.setLayout(null); Box basebox = Box.createHorizontalBox(); basebox.add(hintLabel7); basebox.add(inputnum7); basebox.add(new JScrollPane(table7)); basebox.add(enter7); jp.add(basebox); this.add(jp); basebox.setBounds(10, 40, 550, 38); inputnum7.addActionListener(this); enter7.addActionListener(this); setBounds(20, 60, 700, 200); this.validate(); } //添加职工信息 else if (e.getSource() == item8) { this.getContentPane().removeAll(); jp = new JPanel(); hintLabel8 = new JLabel("输入新记录:"); table8 = new JTable(a8, name8); enterInsert8 = new JButton("插入新记录"); jp.setLayout(null); Box baseBox = Box.createHorizontalBox(); baseBox.add(hintLabel8); baseBox.add(new JScrollPane(table8)); baseBox.add(enterInsert8); jp.add(baseBox); baseBox.setBounds(10, 40, 800, 38); this.add(jp); enterInsert8.addActionListener(this); setBounds(120, 160, 850, 200); this.validate(); } //添加职工出勤情况 else if (e.getSource() == item9) { this.getContentPane().removeAll(); jp = new JPanel(); hintLabel9 = new JLabel("输入新信息:"); table9 = new JTable(a9, name9); enterInsert9 = new JButton("插入新信息"); jp.setLayout(null); Box baseBox = Box.createHorizontalBox(); baseBox.add(hintLabel9); baseBox.add(new JScrollPane(table9)); baseBox.add(enterInsert9); jp.add(baseBox); baseBox.setBounds(10, 40, 500, 38); this.add(jp); enterInsert9.addActionListener(this); setBounds(120, 160, 550, 200); this.validate(); } //添加职工津贴信息 else if (e.getSource() == item10) { this.getContentPane().removeAll(); jp = new JPanel(); hintLabel10 = new JLabel("输入新信息:"); table10 = new JTable(a10, name10); enterInsert10 = new JButton("插入新信息"); jp.setLayout(null); Box baseBox = Box.createHorizontalBox(); baseBox.add(hintLabel10); baseBox.add(new JScrollPane(table10)); baseBox.add(enterInsert10); jp.add(baseBox); baseBox.setBounds(10, 40, 500, 38); this.add(jp); enterInsert10.addActionListener(this); setBounds(120, 160, 550, 200); this.validate(); } //添加出勤信息 else if (e.getSource() == item11) { this.getContentPane().removeAll(); jp = new JPanel(); hintLabel11 = new JLabel("输入新信息:"); table11 = new JTable(a11, name11); enterInsert11 = new JButton("插入新信息"); jp.setLayout(null); Box baseBox = Box.createHorizontalBox(); baseBox.add(hintLabel11); baseBox.add(new JScrollPane(table11)); baseBox.add(enterInsert11); jp.add(baseBox); baseBox.setBounds(10, 40, 500, 38); this.add(jp); enterInsert11.addActionListener(this); setBounds(120, 160, 550, 200); this.validate(); } //添加津贴信息 else if (e.getSource() == item12) { this.getContentPane().removeAll(); jp = new JPanel(); hintLabel12 = new JLabel("输入新信息:"); table12 = new JTable(a12, name12); enterInsert12 = new JButton("插入新信息"); jp.setLayout(null); Box baseBox = Box.createHorizontalBox(); baseBox.add(hintLabel12); baseBox.add(new JScrollPane(table12)); baseBox.add(enterInsert12); jp.add(baseBox); baseBox.setBounds(10, 40, 500, 38); this.add(jp); enterInsert12.addActionListener(this); setBounds(120, 160, 550, 200); this.validate(); } //添加工龄——工资 else if (e.getSource() == item13) { this.getContentPane().removeAll(); jp = new JPanel(); hintLabel13 = new JLabel("输入新信息:"); table13 = new JTable(a13, name13); enterInsert13 = new JButton("插入新信息"); jp.setLayout(null); Box baseBox = Box.createHorizontalBox(); baseBox.add(hintLabel13); baseBox.add(new JScrollPane(table13)); baseBox.add(enterInsert13); jp.add(baseBox); baseBox.setBounds(10, 40, 500, 38); this.add(jp); enterInsert13.addActionListener(this); setBounds(120, 160, 550, 200); this.validate(); } //添加 职务——工资 else if (e.getSource() == item14) { this.getContentPane().removeAll(); jp = new JPanel(); hintLabel14 = new JLabel("输入新信息:"); table14 = new JTable(a14, name14); enterInsert14 = new JButton("插入新信息"); jp.setLayout(null); Box baseBox = Box.createHorizontalBox(); baseBox.add(hintLabel14); baseBox.add(new JScrollPane(table14)); baseBox.add(enterInsert14); jp.add(baseBox); baseBox.setBounds(10, 40, 500, 38); this.add(jp); enterInsert14.addActionListener(this); setBounds(120, 160, 550, 200); this.validate(); } //显示 职工出勤情况 else if (e.getSource() == item15) { this.getContentPane().removeAll(); jp = new JPanel(); try { con = getConnection(); sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = sql.executeQuery("SELECT * FROM CalEmpAndPre"); rs.last(); int lastNumber = rs.getRow(); a15 = new Object[lastNumber][4]; int k = 0; rs.beforeFirst(); while (rs.next()) { a15[k][0] = rs.getString(1); a15[k][1] = rs.getString(3); a15[k][2] = rs.getString(4); a15[k][3] = rs.getDouble(5); k++; } con.close(); } catch (SQLException ee) { System.out.println(ee); } table15 = new JTable(a15, name15); jp.setLayout(new BorderLayout()); jp.add(new JScrollPane(table15), BorderLayout.CENTER); this.add(jp); setBounds(120, 160, 550, 200); this.validate(); } //显示职工津贴信息 else if (e.getSource() == item16) { this.getContentPane().removeAll(); jp = new JPanel(); try { con = getConnection(); sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = sql.executeQuery("SELECT * FROM CalEmpAndJintie"); rs.last(); int lastNumber = rs.getRow(); a16 = new Object[lastNumber][3]; int k = 0; rs.beforeFirst(); while (rs.next()) { a16[k][0] = rs.getString(1); a16[k][1] = rs.getDouble(3); a16[k][2] = rs.getString(4); k++; } con.close(); } catch (SQLException ee) { System.out.println(ee); } table16 = new JTable(a16, name16); jp.setLayout(new BorderLayout()); jp.add(new JScrollPane(table16), BorderLayout.CENTER); this.add(jp); setBounds(120, 160, 550, 200); this.validate(); } //显示职工基本工资信息 else if (e.getSource() == item17) { this.getContentPane().removeAll(); jp = new JPanel(); try { con = getConnection(); sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = sql.executeQuery("SELECT * FROM CalEmpAndSal"); rs.last(); int lastNumber = rs.getRow(); a17 = new Object[lastNumber][2]; int k = 0; rs.beforeFirst(); while (rs.next()) { a17[k][0] = rs.getString(1); a17[k][1] = rs.getDouble(2) + rs.getDouble(3); // System.out.println("update EmpAndSal set emp_salary="+Double.parseDouble(a[k][1].toString())+" where emp_salEmpNO='"+a[k][0]+"'"); String s = new String("update EmpAndSal set emp_salary=" + Double.parseDouble(a17[k][1].toString()) + " where emp_salEmpNO='" + a17[k][0] + "'"); Statement m = con.createStatement(); m.executeUpdate(s); k++; } con.close(); } catch (SQLException ee) { System.out.println(ee); } table17 = new JTable(a17, name17); jp.setLayout(new BorderLayout()); jp.add(new JScrollPane(table17), BorderLayout.CENTER); this.add(jp); setBounds(120, 160, 550, 200); this.validate(); } //统计职工工资 else if (e.getSource() == item18) { this.getContentPane().removeAll(); jp = new JPanel(); try { con = getConnection(); con.setAutoCommit(false); sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); sql1 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs1 = sql1.executeQuery("SELECT emp_No FROM employees"); rs1.last(); int lastNumber = rs1.getRow(); a18 = new Object[lastNumber][14]; rs1.beforeFirst(); int k = 0; while (rs1.next()) { String m = rs1.getString(1); // System.out.println(m+""); // System.out.println("SELECT emp_salary FROM EmpAndSal WHERE emp_salEmpNo='"+m+"'"); rs = sql.executeQuery("SELECT emp_salary FROM EmpAndSal WHERE emp_salEmpNo='" + m + "'"); a18[k][0] = m; a18[k][1] = 0; a18[k][2] = 0; a18[k][3] = 0; a18[k][4] = 0; a18[k][5] = 0; a18[k][6] = 0; a18[k][7] = 0; a18[k][8] = 0; a18[k][9] = 0; a18[k][10] = 0; a18[k][11] = 0; a18[k][12] = 0; a18[k][13] = 0; rs.beforeFirst(); while (rs.next()) { a18[k][1] = rs.getDouble(1); } double s = Double.parseDouble(a18[k][1].toString()) / 24; double sum = 0; rs = sql.executeQuery("SELECT jin_No,jin_Money,jin_Name FROM CalEmpAndJintie WHERE emp_jinEmpNo='" + m + "'"); //查询津贴 while (rs.next()) { int pr = rs.getInt(1); if (pr == 1) { a18[k][2] = rs.getDouble(2); } else if (pr == 2) { a18[k][3] = rs.getDouble(2); } else if (pr == 3) { a18[k][4] = rs.getDouble(2); } else if (pr == 4) { a18[k][8] = rs.getDouble(2); } } rs = sql.executeQuery("SELECT pre_No,emp_prePreDays,pre_Xishu FROM CalEmpAndPre WHERE emp_preEmpNo='" + m + "'"); //查询出勤 while (rs.next()) { int pre = rs.getInt(1); if (pre == 6) { a18[k][5] = rs.getDouble(2) * s * rs.getDouble(3); } else if (pre == 7) { a18[k][6] = rs.getDouble(2) * s * rs.getDouble(3); } else if (pre == 8) { a18[k][7] = rs.getDouble(2) * s * rs.getDouble(3); } else if (pre == 3) { a18[k][9] = rs.getDouble(2) * s * rs.getDouble(3); } else if (pre == 5) { a18[k][10] = rs.getDouble(2) * s * rs.getDouble(3); } else if (pre == 4) { a18[k][11] = rs.getDouble(2) * s * rs.getDouble(3); } else { sum = sum + rs.getDouble(2) * s * rs.getDouble(3); } } a18[k][12] = sum; a18[k][13] = sum + Double.parseDouble(a18[k][1].toString()) + Double.parseDouble(a18[k][2].toString()) + Double.parseDouble(a18[k][3].toString()) + Double.parseDouble(a18[k][4].toString()) + Double.parseDouble(a18[k][5].toString()) + Double.parseDouble(a18[k][6].toString()) + Double.parseDouble(a18[k][7].toString()) + Double.parseDouble(a18[k][8].toString()) + Double.parseDouble(a18[k][9].toString()) + Double.parseDouble(a18[k][10].toString()) + Double.parseDouble(a18[k][11].toString()); int re = sql.executeUpdate("Update EmpAndRSal SET emp_rsalary=" + Double.parseDouble(a18[k][13].toString()) + " WHERE emp_rsalEmpNo='" + m + "'"); k++; if(re == 1) System.out.println(m + "的实际工资更新成功了"); else System.out.println(m + "的实际工资更新失败了"); } con.commit(); con.close(); } catch (SQLException ee) { try { con.rollback(); } catch (SQLException e1) { System.out.println(e1); } } table18 = new JTable(a18, name18); jp.setLayout(new BorderLayout()); jp.add(new JScrollPane(table18), BorderLayout.CENTER); this.add(jp); setBounds(120, 160, 550, 200); this.validate(); } //统计部门工资 else if (e.getSource() == item19) { this.getContentPane().removeAll(); jp = new JPanel(); jj19 = new JButton("ok"); jt19 = new JTextField(16); jp.setLayout(new FlowLayout()); jp.add(jj19); jp.add(jt19); jj19.addActionListener(this); this.setLayout(new BorderLayout()); this.add(jp, BorderLayout.NORTH); // this.setBounds(10,10,550,200); this.setVisible(true); this.validate(); this.setBounds(10, 10, 550, 203); } //统计总厂工资(没有这个功能了) // else if (e.getSource() == item20) { // this.getContentPane().removeAll(); // jp = new JPanel(); // try { // con = getConnection(); // // sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, // ResultSet.CONCUR_READ_ONLY); // rs = sql.executeQuery("SELECT * FROM CalEmpAndDep"); // rs.last(); // int k = rs.getRow(); // a20 = new Object[k + 1][2]; // rs.beforeFirst(); // k = 0; // double sum = 0; // while (rs.next()) { // a20[k][0] = rs.getDouble(1); // a20[k][1] = rs.getInt(2); // sum = sum + rs.getDouble(1); // // System.out.println(a20[k][0]+""+a20[k][1]); // k++; // } // a20[k][0] = sum; // a20[k][1] = "厂总工资"; // con.close(); // } catch (SQLException e1) { // e1.printStackTrace(); // } // jp.setLayout(new BorderLayout()); // table20 = new JTable(a20, name20); // jp.add(new JScrollPane(table20), BorderLayout.CENTER); // this.add(jp); // this.validate(); // } //删除职工信息 else if (e.getSource() == item21) { this.getContentPane().removeAll(); jp = new JPanel(); hintLabel21 = new JLabel("输入员工编号:"); jb21 = new JButton("删除记录"); inputNumber21 = new JTextField(16); jp.add(hintLabel21); jp.add(inputNumber21); jp.add(jb21); this.add(jp); inputNumber21.addActionListener(this); jb21.addActionListener(this); setBounds(20, 60, 700, 200); this.validate(); } //删除职工出勤信息 else if (e.getSource() == item22) { this.getContentPane().removeAll(); jj22 = new JButton("ok"); jt22 = new JTextField(16); jp = new JPanel(); jp.setLayout(new FlowLayout()); jp.add(jt22); jp.add(jj22); jj22.addActionListener(this); jl22 = new JTextField(16); jb22 = new JButton("删除"); jb22.addActionListener(this); JPanel jpj = new JPanel(); jpj.setLayout(new FlowLayout()); jpj.add(jl22); jpj.add(jb22); this.add(jpj, BorderLayout.NORTH); this.add(jp, BorderLayout.SOUTH); this.setBounds(12, 10, 500, 500); this.setVisible(true); this.validate(); } //删除职工津贴信息 else if (e.getSource() == item23) { this.getContentPane().removeAll(); jj23 = new JButton("ok"); jt23 = new JTextField(16); jp = new JPanel(); jp.setLayout(new FlowLayout()); jp.add(jt23); jp.add(jj23); jj23.addActionListener(this); jl23 = new JTextField(16); jb23 = new JButton("删除"); jb23.addActionListener(this); JPanel jpj = new JPanel(); jpj.setLayout(new FlowLayout()); ; jpj.add(jl23); jpj.add(jb23); this.add(jpj, BorderLayout.NORTH); this.add(jp, BorderLayout.SOUTH); this.setBounds(12, 10, 500, 500); this.setVisible(true); this.validate(); } //修改职工部门监听 if (e.getSource() == inputNumber) { try { num = inputNumber.getText().trim(); con = getConnection(); sql = con.createStatement(); rs = sql.executeQuery("SELECT * FROM DepAndEmp WHERE dep_empEmpNo='" + num + "'"); boolean boo = rs.next(); if (boo == false) { JOptionPane.showMessageDialog(this, "该员工不存在", "提示", JOptionPane.WARNING_MESSAGE); } else { a[0][0] = rs.getInt(2); table.repaint(); } con.close(); } catch (SQLException ee) { System.out.println(ee); } } if (e.getSource() == enterModify) { try { con = getConnection(); sql = con.createStatement(); sql.executeUpdate("UPDATE DepAndEmp SET dep_empDepNo=" + a[0][0] + " WHERE dep_empEmpNo='" + num + "'"); JOptionPane.showMessageDialog(this, "修改成功", "成功", JOptionPane.PLAIN_MESSAGE); con.close(); } catch (SQLException ee) { JOptionPane.showMessageDialog(this, "修改失败" + ee, "失败", JOptionPane.ERROR_MESSAGE); } } // 修改职工基本工资监听 if (e.getSource() == inputNumber3) { try { num = inputNumber3.getText().trim(); con = getConnection(); sql = con.createStatement(); rs = sql.executeQuery("SELECT * FROM EmpAndSal WHERE emp_salEmpNO='" + num + "'"); boolean boo = rs.next(); if (boo == false) { JOptionPane.showMessageDialog(this, "该员工不存在", "提示", JOptionPane.WARNING_MESSAGE); } else { a3[0][0] = rs.getInt(2); a3[0][1] = rs.getInt(3); table3.repaint(); } con.close(); } catch (SQLException ee) { System.out.println(ee); } } if (e.getSource() == enterModify3) { try { con = getConnection(); sql = con.createStatement(); sql.executeUpdate("UPDATE EmpAndSal SET emp_salTimeLev=" + a3[0][0] + ",emp_salTechLev=" + a3[0][1] + " WHERE emp_salEmpNO='" + num + "'"); JOptionPane.showMessageDialog(this, "修改成功", "成功", JOptionPane.PLAIN_MESSAGE); con.close(); } catch (SQLException ee) { JOptionPane.showMessageDialog(this, "修改失败" + ee, "失败", JOptionPane.ERROR_MESSAGE); } } // 修改出勤表信息监听 if (e.getSource() == inputnum4) { try { int x = Integer.parseInt(inputnum4.getText().trim()); num = inputnum4.getText().trim(); con = getConnection(); sql = con.createStatement(); rs = sql.executeQuery("SELECT * from presence where pre_no=" + x); boolean boo = rs.next(); if (boo == false) { JOptionPane.showMessageDialog(this, "出勤类别号不存在", "提示", JOptionPane.WARNING_MESSAGE); } else { a4[0][0] = rs.getString(2); a4[0][1] = rs.getDouble(3); table4.repaint(); } con.close(); } catch (SQLException ee) { System.out.println(ee); } } if (e.getSource() == enter4) { try { con = getConnection(); //System.out.println(a4[0][0] + "," + a4[0][1] + "," + num); sql = con.createStatement(); int k = sql.executeUpdate("update presence set pre_name='" + a4[0][0] + "',pre_xishu=" + Double.parseDouble(a4[0][1].toString()) + " where pre_no='" + num + "'"); if (k == 1) { JOptionPane.showMessageDialog(this, "信息更新成功", "成功", JOptionPane.PLAIN_MESSAGE); con.close(); } } catch (SQLException ee) { JOptionPane.showMessageDialog(this, "更新失败" + ee, "失败", JOptionPane.ERROR_MESSAGE); } } // 监听修改津贴信息 if (e.getSource() == inputnum5) { int k = Integer.parseInt(inputnum5.getText().trim()); try { System.out.println(k + ""); con = getConnection(); sql = con.createStatement(); rs = sql.executeQuery("SELECT * from Jintie where jin_no=" + k); boolean boo = rs.next(); if (boo == false) { JOptionPane.showMessageDialog(this, "出勤类别号不存在", "提示", JOptionPane.WARNING_MESSAGE); } else { a5[0][0] = rs.getString(2); a5[0][1] = rs.getDouble(3); table5.repaint(); } // System.out.println(Double.parseDouble(a5[0][1].toString())+""); con.close(); } catch (SQLException ee) { System.out.println(ee); } } if (e.getSource() == enter5) { int k = Integer.parseInt(inputnum5.getText().trim()); try { con = getConnection(); sql = con.createStatement(); // System.out.println(Double.parseDouble(a5[0][1].toString())+""); int m = sql.executeUpdate("update jintie set jin_name='" + a5[0][0] + "',jin_Money=" + Double.parseDouble(a5[0][1].toString()) + " where jin_no='" + k + "'"); if (m == 1) { JOptionPane.showMessageDialog(this, "信息修改成功", "成功", JOptionPane.PLAIN_MESSAGE); con.close(); } } catch (SQLException ee) { JOptionPane.showMessageDialog(this, "修改失败" + ee, "失败", JOptionPane.ERROR_MESSAGE); } } // 修改工资工龄监听 if (e.getSource() == inputnum6) { int k = Integer.parseInt(inputnum6.getText().trim()); try { // System.out.println(k+""); con = getConnection(); sql = con.createStatement(); rs = sql.executeQuery("SELECT * from SalAndTime where sal_timeLev=" + k); boolean boo = rs.next(); if (boo == false) { JOptionPane.showMessageDialog(this, "该等级不存在", "提示", JOptionPane.WARNING_MESSAGE); } else { a6[0][0] = rs.getDouble(2); table6.repaint(); } con.close(); } catch (SQLException ee) { System.out.println(ee); } } if (e.getSource() == enter6) { int k = Integer.parseInt(inputnum6.getText().trim()); try { con = getConnection(); sql = con.createStatement(); int m = sql .executeUpdate("update SalAndTime set sal_timeMoney=" + Double.parseDouble(a6[0][0].toString()) + " where sal_timeLev='" + k + "'"); if (m == 1) { JOptionPane.showMessageDialog(this, "信息修改成功", "成功", JOptionPane.PLAIN_MESSAGE); con.close(); } } catch (SQLException ee) { JOptionPane.showMessageDialog(this, "修改失败" + ee, "失败", JOptionPane.ERROR_MESSAGE); } } // 修改职务工资监听 if (e.getSource() == inputnum7) { int k = Integer.parseInt(inputnum7.getText().trim()); try { // System.out.println(k+""); con = getConnection(); sql = con.createStatement(); rs = sql.executeQuery("SELECT * from SalAndTech where sal_techLev=" + k); boolean boo = rs.next(); if (boo == false) { JOptionPane.showMessageDialog(this, "该等级不存在", "提示", JOptionPane.WARNING_MESSAGE); } else { a7[0][0] = rs.getDouble(2); table7.repaint(); } con.close(); } catch (SQLException ee) { System.out.println(ee); } } if (e.getSource() == enter7) { int k = Integer.parseInt(inputnum7.getText().trim()); try { con = getConnection(); sql = con.createStatement(); int m = sql .executeUpdate("update SalAndTech set sal_techMoney=" + Double.parseDouble(a7[0][0].toString()) + " where sal_techLev='" + k + "'"); if (m == 1) { JOptionPane.showMessageDialog(this, "信息修改成功", "成功", JOptionPane.PLAIN_MESSAGE); con.close(); } } catch (SQLException ee) { JOptionPane.showMessageDialog(this, "修改失败" + ee, "失败", JOptionPane.ERROR_MESSAGE); } } // 添加职工信息监听 if (e.getSource() == enterInsert8) { try { con = getConnection(); con.setAutoCommit(false); sql = con.createStatement(); int k = sql.executeUpdate("INSERT INTO employees VALUES('" + a8[0][0] + "','" + a8[0][1] + "','" + a8[0][2] + "','" + a8[0][3] + "','" + a8[0][4] + "','" + a8[0][5] + "','" + a8[0][6] + "','" + a8[0][7] + "','" + a8[0][8] + "')"); System.out.println("k = " + k); int m = sql .executeUpdate("INSERT INTO EmpandSal(emp_salEmpNO,emp_salTimeLev,emp_salTechLev) VALUES('" + a8[0][0] + "'," + a8[0][8] + "," + a8[0][10] + ")"); int n = sql.executeUpdate("INSERT INTO DepAndEmp VALUES('" + a8[0][0] + "'," + a8[0][9] + ")"); int l = sql .executeUpdate("INSERT INTO EmpAndRSal(emp_rsalEmpNo) VALUES('" + a8[0][0] + "')"); if (k == 1 && m == 1 && n == 1 && l == 1) JOptionPane.showMessageDialog(this, "插入成功", "成功", JOptionPane.PLAIN_MESSAGE); con.commit(); con.close(); } catch (SQLException ee) { try { con.rollback(); JOptionPane.showMessageDialog(this, "插入失败" + ee, "失败", JOptionPane.ERROR_MESSAGE); } catch (SQLException e1) { e1.printStackTrace(); } } } // 添加出勤信息监听 if (e.getSource() == enterInsert9) { try { con = getConnection(); sql = con.createStatement(); int k = sql.executeUpdate("INSERT INTO EmpAndPre VALUES('" + a9[0][0] + "'," + a9[0][1] + "," + a9[0][2] + ")"); if (k == 1) JOptionPane.showMessageDialog(this, "插入成功", "成功", JOptionPane.PLAIN_MESSAGE); con.close(); } catch (SQLException ee) { JOptionPane.showMessageDialog(this, "插入失败" + ee, "失败", JOptionPane.ERROR_MESSAGE); } } //添加津贴信息监听 if (e.getSource() == enterInsert10) { try { con = getConnection(); sql = con.createStatement(); int k = sql.executeUpdate("INSERT INTO EmpAndJintie VALUES('" + a10[0][0] + "'," + a10[0][1] + ")"); if (k == 1) JOptionPane.showMessageDialog(this, "插入成功", "成功", JOptionPane.PLAIN_MESSAGE); con.close(); } catch (SQLException ee) { JOptionPane.showMessageDialog(this, "插入失败" + ee, "失败", JOptionPane.ERROR_MESSAGE); } } // 添加出勤信息监听 if (e.getSource() == enterInsert11) { try { con = getConnection(); sql = con.createStatement(); int k = sql.executeUpdate("INSERT INTO Presence VALUES(" + Integer.parseInt(a11[0][0].toString()) + ",'"+ a11[0][1] + "',"+ Double.parseDouble(a11[0][2].toString()) + ")"); if (k == 1) JOptionPane.showMessageDialog(this, "插入成功", "成功", JOptionPane.PLAIN_MESSAGE); con.close(); } catch (SQLException ee) { JOptionPane.showMessageDialog(this, "插入失败" + ee, "失败", JOptionPane.ERROR_MESSAGE); } } // 添加津贴信息监听 if (e.getSource() == enterInsert12) { try { con = getConnection(); sql = con.createStatement(); int k = sql.executeUpdate("INSERT INTO Jintie VALUES(" + Integer.parseInt(a12[0][0].toString()) + ",'" + a12[0][1] + "'," + Double.parseDouble(a12[0][2].toString()) + ")"); if (k == 1) JOptionPane.showMessageDialog(this, "插入成功", "成功", JOptionPane.PLAIN_MESSAGE); con.close(); } catch (SQLException ee) { JOptionPane.showMessageDialog(this, "插入失败" + ee, "失败", JOptionPane.ERROR_MESSAGE); } } // 添加工龄等级监听 if (e.getSource() == enterInsert13) { try { con = getConnection(); // con = DriverManager.getConnection("jdbc:odbc:guo", "system", // "system"); cstmt = con.prepareCall("{ call insert_data(?,?,?,?,?) }"); cstmt.setInt(1, 1); cstmt.setInt(2, 0); cstmt.setInt(3, Integer.parseInt(a13[0][0].toString())); System.out.println("here:" + Double.parseDouble(a13[0][0].toString()) + ""); cstmt.setDouble(4, Double.parseDouble(a13[0][1].toString())); cstmt.registerOutParameter(5, java.sql.Types.DECIMAL); cstmt.execute(); int k = cstmt.getInt(5); System.out.println(cstmt.getInt(5)); // sql=con.createStatement(); // int // k=sql.executeUpdate("INSERT INTO SalAndTime VALUES("+Integer.parseInt(a13[0][0].toString())+","+Double.parseDouble(a13[0][1].toString())+")"); if (k == 0) JOptionPane.showMessageDialog(this, "插入成功", "成功", JOptionPane.PLAIN_MESSAGE); con.close(); } catch (SQLException ee) { JOptionPane.showMessageDialog(this, "插入失败" + ee, "失败", JOptionPane.ERROR_MESSAGE); } } // 添加职务工资信息监听 if (e.getSource() == enterInsert14) { try { con = getConnection(); cstmt = con.prepareCall("{ call insert_data(?,?,?,?,?) }"); cstmt.setInt(1, 0); cstmt.setInt(2, 1); cstmt.setInt(3, Integer.parseInt(a14[0][0].toString())); cstmt.setDouble(4, Double.parseDouble(a14[0][1].toString())); cstmt.registerOutParameter(5, java.sql.Types.DECIMAL); cstmt.execute(); int k = cstmt.getInt(5); System.out.println(cstmt.getInt(5)); // sql=con.createStatement(); // int // k=sql.executeUpdate("INSERT INTO SalAndTech VALUES("+Integer.parseInt(a14[0][0].toString())+","+Double.parseDouble(a14[0][1].toString())+")"); if (k == 0) JOptionPane.showMessageDialog(this, "插入成功", "成功", JOptionPane.PLAIN_MESSAGE); con.close(); } catch (SQLException ee) { JOptionPane.showMessageDialog(this, "插入失败" + ee, "失败", JOptionPane.ERROR_MESSAGE); } } // 监听部门工资统计 if (e.getSource() == jj19) { int m = Integer.parseInt(jt19.getText().toString()); System.out.println("m = " + m); try { con = getConnection(); sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = sql.executeQuery("SELECT emp_rsalEmpNo,emp_rsalary FROM DepAndEmp,EmpAndRSal WHERE dep_empEmpNo=emp_rsalEmpNo AND dep_empDepNo=" + m); rs.last(); int k = rs.getRow(); if (k != 1) { a19 = new Object[k + 1][2]; rs.beforeFirst(); k = 0; double sum = 0; while (rs.next()) { a19[k][0] = rs.getString(1); a19[k][1] = rs.getDouble(2); sum = sum + rs.getDouble(2); // System.out.println(a[k][0]+""+a[k][1]); k++; } a19[k][0] = "该部门总工资"; a19[k][1] = sum; con.close(); table19 = new JTable(a19, name19); add(new JScrollPane(table19), BorderLayout.CENTER); } else JOptionPane.showMessageDialog(this, "输入错误", "错误", JOptionPane.ERROR_MESSAGE); } catch (SQLException e1) { e1.printStackTrace(); } table19 = new JTable(a19, name19); add(new JScrollPane(table19), BorderLayout.CENTER); validate(); } // 删除职工信息监听 if (e.getSource() == jb21) { try { con = getConnection(); sql = con.createStatement(); int l = sql .executeUpdate("delete from employees where emp_No='" + inputNumber21.getText() + "'"); if (l == 1) JOptionPane.showMessageDialog(this, "删除成功", "成功", JOptionPane.PLAIN_MESSAGE); else JOptionPane.showMessageDialog(this, "没有该员工", "警告", JOptionPane.WARNING_MESSAGE); con.close(); } catch (SQLException ee) { JOptionPane.showMessageDialog(this, "删除失败" + ee, "失败", JOptionPane.ERROR_MESSAGE); } } // 删除员工出勤信息监听 if (e.getSource() == jj22) { num = jt22.getText(); try { con = getConnection(); sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = sql.executeQuery("SELECT * FROM EmpAndPre WHERE emp_preEmpNo='" + num + "'"); rs.last(); int k = rs.getRow(); a22 = new Object[k][3]; rs.beforeFirst(); k = 0; while (rs.next()) { a22[k][0] = rs.getString(1); a22[k][1] = rs.getInt(2); a22[k][2] = rs.getInt(3); k++; } con.close(); } catch (SQLException e1) { e1.printStackTrace(); } table22 = new JTable(a22, name22); add(new JScrollPane(table22), BorderLayout.CENTER); JPanel jpj = new JPanel(); jpj.setLayout(new FlowLayout()); validate(); } else if (e.getSource() == jb22) { String b = jt22.getText(); int c = Integer.parseInt(jl22.getText()); System.out.println(b + " " + c); try { con = getConnection(); sql = con.createStatement(); int l = sql .executeUpdate("DELETE FROM EmpAndPre WHERE emp_preEmpNo='" + b + "' and emp_prePreNo=" + c + ""); if (l == 0) { JOptionPane.showMessageDialog(this, "删除失败", "失败", JOptionPane.ERROR_MESSAGE); } else JOptionPane.showMessageDialog(this, "删除成功", "成功", JOptionPane.PLAIN_MESSAGE); con.close(); } catch (SQLException e1) { e1.printStackTrace(); } validate(); } //删除职工津贴信息 if (e.getSource() == jj23) { num = jt23.getText(); try { con = getConnection(); sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = sql.executeQuery("SELECT * FROM EmpAndJintie WHERE emp_jinEmpNo='" + num + "'"); rs.last(); int k = rs.getRow(); a23 = new Object[k][2]; rs.beforeFirst(); k = 0; while (rs.next()) { a23[k][0] = rs.getString(1); a23[k][1] = rs.getInt(2); k++; } con.close(); } catch (SQLException e1) { e1.printStackTrace(); } table23 = new JTable(a23, name23); add(new JScrollPane(table23), BorderLayout.CENTER); JPanel jpj = new JPanel(); jpj.setLayout(new FlowLayout()); validate(); } else if (e.getSource() == jb23) { String b = jt23.getText(); int c = Integer.parseInt(jl23.getText()); System.out.println(b + " " + c); try { con = getConnection(); sql = con.createStatement(); int l = sql .executeUpdate("DELETE FROM EmpAndJintie WHERE emp_jinEmpNo='" + b + "' and emp_jinJinNo=" + c + ""); if (l == 0) { JOptionPane.showMessageDialog(this, "删除失败", "失败", JOptionPane.ERROR_MESSAGE); } else JOptionPane.showMessageDialog(this, "删除成功", "成功", JOptionPane.PLAIN_MESSAGE); con.close(); } catch (SQLException e1) { e1.printStackTrace(); } } } private Connection getConnection() {// String url = "jdbc:sqlserver://localhost:1433;DatabaseName=Salary"; try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载mysql的驱动 return (Connection) DriverManager.getConnection(url, "sa", "123"); //返回数据库的连接 } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return null; } public static void main(String args[]) { new adminUser(); } } ``` ``` Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at ch12.adminUser.actionPerformed(adminUser.java:1201) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$400(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
关于SQLDataReader的问题,菜鸟请大神!!
using System; using System.Collections.Generic; using System.Text; using System.Configuration; using System.Data.SqlClient; using Maticsoft.DBUtility; using System.Data; using System.Threading; namespace ConsoleApplication3 { public class Program { static System.Timers.Timer timer; private static object locko = new object(); static void Main(string[] args) { timer = new System.Timers.Timer(); timer.Interval = 5000;//计时器间隔 timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);//计时器间隔事件 timer.Start();//开启计时器 Console.ReadLine(); } static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { // Comm.ComStr s = new Comm.ComStr(); lock (timer) { try { // DateTime.AddMinite(10) DbHelperSQL.ConnectionString = "Data Source=192.168.0.198;Initial Catalog=abn_LTGS;User ID=sa;Password=;Persist Security Info=True;MultipleActiveResultSets=False;Packet Size=4096;;";//查询第一台服务器数据库的数据 StringBuilder sb = new StringBuilder(); sb.Append("time<15:00 and time <16:00 order by time "); using (SqlDataReader sqlDr = timerToSql(sb.ToString())) { while (sqlDr.Read()) { //DbHelperSQL.ConnectionString = " Data Source=127.0.0.1;Initial Catalog=test1;User ID=sa;Password=;Persist Security Info=True;MultipleActiveResultSets=False;Packet Size=4096;";//插入第二台服务器连接字符串 //bool b = DbHelperSQL.Exists("//判断是否存在存在就插入不存在就不插入"); //if (!b) //{ // //执行插入 //} } } } catch (Exception ex) { Console.WriteLine(ex.Message); } } // Console.ReadLine(); } /// <summary> /// 查询站数据库 DataReader方式 /// </summary> /// <param name="strWhere">SQL语句条件</param> /// <param name="sql">SQL连接字符串</param> /// <returns></returns> public static SqlDataReader timerToSql(string strWhere) { // Comm.ComStr.StrSql = sql;//公共方法传SQL字符串 StringBuilder strSql = new StringBuilder(); strSql.Append("select *"); strSql.Append(" FROM [deviantList] "); if (strWhere.Trim() != "") { strSql.Append(" where " + strWhere); } return DbHelperSQL.ExecuteReader(strSql.ToString()); } } } /// <summary> /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close ) /// </summary> /// <param name="strSQL">查询语句</param> /// <returns>SqlDataReader</returns> public static SqlDataReader ExecuteReader(string strSQL,string connStr ) { SqlConnection connection = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand(strSQL, connection); try { connection.Open(); SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); return myReader; } catch (System.Data.SqlClient.SqlException e) { throw e; } } ``` ``` B服务器开启timer一直读取A服务器的数据,向我种写法会不会导致SQLSERVER资源被耗尽,或线程池资源被耗尽? 看网上资料SQLDateReader一定要关闭,不然会导致线程池被耗尽,但我现在写在using模块里应该执行完了就会自动释放吧?
jsp+servlet实现分页
我在做jsp+servlet数据分页的时候,无法实现前后翻页, 下面是我的分层结构 jsp [code="java"] <%@page contentType="text/html;charset=gbk" %> <%@page language="java" import="java.util.*" %> <%@ include file="inc/cmnAuthenticate.jsp" %> <%@page language="java" import="ch05.*" %> <% Vector vMails = null; int totalPage=0; int curPage=0; int countPerPage=10; int pageNumber=1; Hashtable myValues = (Hashtable)session.getAttribute(CommonConst.VIEWID_INBOXLIST); if ( myValues != null ) { vMails = (Vector)myValues.get("mails"); if ( vMails == null ) { vMails = new Vector(); } if(myValues.get("totalPage")!=null){ totalPage=((Integer)myValues.get("totalPage")).intValue(); } if(myValues.get("curPage")!=null){ curPage=((Integer)myValues.get("curPage")).intValue(); } } %> <html> <head> <title>收件箱</title> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <script language="JAVASCRIPT" src="common\cmnScript.js"></script> <script language="JAVASCRIPT" src="inbox.js"></script> <link rel="stylesheet" type="text/css" href="common\cmnStyle.css" TITLE="common"></link> <script language="JAVASCRIPT"> <% if ( session.getAttribute("errMsg") != null ) { %> var sErrMsg = "<%=session.getAttribute("errMsg")%>"; <% } else { %> var sErrMsg = ""; <% } %> </script> </head> <%@ include file="inc/cmnPagePart1.jsp" %> <table border=0 cellpadding=0 cellspacing=0 width=650 align=center> <tr> <td height=15>&nbsp;</td> </tr> <tr> <td height=30>你当前共有 <font color=blue><%=vMails.size()%></font> 封邮件。</td> </tr> <tr> <td> <table border=1 bordercolor="#13A7FD" cellpadding=2 cellspacing=0 width=650 align=center> <tr> <td width=130> <b>发件人</b> </td> <td width=400> <b>主题</b> </td> <td width=120> <b>发信时间</b> </td> </tr> <% if ( vMails.size() > 0 ) { for ( int i=0; i<vMails.size(); i++ ) { if(i<countPerPage){ MailContent mailContent = (MailContent)vMails.get(i); String sFrom = mailContent.getSender(); String sSubject = mailContent.getSubject(); String sSendTime = mailContent.getSendTime(); String sReadFlg = mailContent.getReadFlg(); if ( sReadFlg.equals("0") ) { %> <tr> <td> <b><%=sFrom%></b> </td> <td> <b><a href="javascript:gotoMail('<%=i%>')"><%=sSubject%></a></b> </td> <td> <%=sSendTime%> </td> </tr> <% } else { %> <tr> <td> <%=sFrom%> </td> <td> <a href="javascript:gotoMail('<%=i%>')"><%=sSubject%></a> </td> <td> <%=sSendTime%> </td> </tr> <% } } } } else { %> <tr> <td colspan=3> 没有任何邮件! </td> </tr> <% } %> </table> </td> </tr> <tr> <td height=20>&nbsp;</td> </tr> </table> <form name="form_main" action="servlet/Inbox" method="post" > <input type="hidden" name="mailIndex" value=""> <div align="right"> 共 <font color=blue><%=totalPage%></font> 页,当前是第 <font color=blue><%=(totalPage==0?0:curPage+1)%></font> 页 &nbsp; <% if ( curPage > 0 ) { %> <a href="javascript: gotoPagePosition('0')">首页</a> &nbsp; <a href="javascript: gotoPagePosition('<%=curPage-1%>')">前一页</a> &nbsp; <% } else { %> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; <% } if ( curPage < totalPage-1 ) { %> <a href="javascript: gotoPagePosition('<%=curPage+1%>')">后一页</a> &nbsp; <a href="javascript: gotoPagePosition('<%=totalPage-1%>')">末页</a> &nbsp; <% } else { %> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; <% } %> <input type="hidden" name="pageId" value="S0101"> <input type="hidden" name="gotoPageNo" value=""> </div> </form> <%@ include file="inc/cmnPagePart2.jsp" %> [/code] servlet [code="java"]/* * This product includes software developed by the * Apache Software Foundation (http://www.apache.org/). */ package ch05.controller; import java.io.*; import java.util.Hashtable; import javax.servlet.*; import javax.servlet.http.*; import ch05.*; import ch05.module.*; /** * 针对收件箱页面的Servlet * @author Administrator * @version 1.0 */ public class Inbox extends HttpServlet implements java.io.Serializable { /** * */ private static final long serialVersionUID = 1L; public void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { //设置提交表单的中文编码 request.setCharacterEncoding("GBK"); HttpSession mySession = request.getSession(true); //清空错误消息 mySession.setAttribute("errMsg",""); //是否非法进入本页面 if ( mySession.getAttribute("username") == null ) { response.sendRedirect("/ch05/login.jsp"); return; } //是否进入默认页面 if ( !request.getParameterNames().hasMoreElements() ) { //设置session中的页面值域 mySession.setAttribute(CommonConst.VIEWID_INBOXLIST, new Hashtable() ); //取得最新邮件 MInbox mInbox = new MInbox(); boolean bGetResult = mInbox.getNewestMail( mySession ); String sGotoPage = request.getParameter("gotoPageNo"); Hashtable myValues = (Hashtable)mySession.getAttribute(ch05.CommonConst.VIEWID_INBOXLIST); myValues.put( "curPage", new Integer(sGotoPage) ); mySession.setAttribute("curPage","inbox"); response.sendRedirect("/ch05/inbox.jsp"); return; } //得到用户输入信息 String sMailIndex = request.getParameter("mailIndex"); String sMailOption = request.getParameter("mailOption"); //如果用户是提交表单 if ( sMailIndex != null && sMailIndex.length() > 0 ) { //设置session中的详细页面值域 mySession.setAttribute(CommonConst.VIEWID_INBOXDETAIL, new Hashtable() ); //获得对应的邮件信息 MInbox mInbox = new MInbox(); boolean bGetResult = mInbox.getDetailMail( mySession, sMailIndex ); if ( bGetResult ) { response.sendRedirect("/ch05/inboxDetail.jsp"); } else { response.sendRedirect("/ch05/inbox.jsp"); } } //如果用户是从详细页面迁移过来的 else if ( sMailOption != null && sMailOption.length() > 0 ) { String sSender = request.getParameter("sender"); String sSendTime = request.getParameter("sendTime"); String sSubject = request.getParameter("subject"); String sContent = request.getParameter("content"); //删除邮件 if ( sMailOption.equals("delete") ) { MInbox mInbox = new MInbox(); boolean bDeleteResult = mInbox.deleteMail( mySession, sSender, sSendTime ); mInbox.getNewestMail( mySession ); response.sendRedirect("/ch05/inbox.jsp"); return; } //回复邮件 else if ( sMailOption.equals("reply") ) { //设置session中的写邮件页面值域 mySession.setAttribute(CommonConst.VIEWID_SENDBOXDETAIL, new Hashtable() ); MInbox mInbox = new MInbox(); boolean bReplyResult = mInbox.replyMail( mySession, sSender, sSubject, sContent ); mySession.setAttribute("curPage","composite"); response.sendRedirect("/ch05/composite.jsp"); return; } try { MInbox mInbox=new MInbox(); mInbox.gotoPage(request, response); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //如果用户非法进入这个页面 else { response.sendRedirect("/ch05/login.jsp"); } } public void doPost ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { doGet( request, response ); } }[/code] 数据库处理 [code="java"]/* * This product includes software developed by the * Apache Software Foundation (http://www.apache.org/). */ package ch05.module; import java.sql.*; import java.util.*; import java.text.*; import javax.mail.*; import javax.mail.internet.*; import javax.servlet.http.*; import ch05.*; /** * 针对收件箱页面的后台处理类 * @author Administrator * @version 1.0 */ public class MInbox { public boolean getNewestMail ( HttpSession mySession ) { //设置用户信息用 Hashtable myValues = (Hashtable)mySession.getAttribute(CommonConst.VIEWID_INBOXLIST); String sHost = ""; String sUser = ""; String sPass = ""; //尝试查找用户邮箱设置 try { //载入SQLServer的JDBC驱动类 Class.forName(CommonConst.DB_DRIVER_CLASSNAME); //获得数据库连接 Connection conn = DriverManager.getConnection( CommonConst.DB_CONN_STRING ); Statement stmt = null; ResultSet rs = null; String sUsername = (String)mySession.getAttribute("username"); try { //设置数据库的rollback点 conn.setAutoCommit(false); //检查数据库中是否已经有该用户的邮箱设置 stmt = conn.createStatement(); //执行SQL语句 String sQuery = "select * from mail_setting where username='" + sUsername + "'"; rs = stmt.executeQuery( sQuery ); if (rs.next() ) { sHost = rs.getString(2); sUser = rs.getString(3); sPass = rs.getString(4); } else { mySession.setAttribute("errMsg","请首先进行邮箱设置!"); return false; } //尝试连接Pop3服务器 Properties props = System.getProperties(); Session session = Session.getDefaultInstance(props, null); //获得收件箱 Store store = session.getStore("pop3"); store.connect( sHost, sUser, sPass); //获得Folder,并按照只读打开 Folder folder = store.getFolder( "INBOX" ); folder.open( Folder.READ_WRITE ); //获得所有邮件,并依次获取内容 Message messages[] = folder.getMessages(); //往数据库中登录 for ( int i=0; i<messages.length; i++ ) { //只要不是html格式,大概没有乱码问题。。。 String sFrom = MailContent.getFrom( messages[i].getFrom()[0].toString() ); String sTo = MailContent.getFrom( messages[i].getRecipients( Message.RecipientType.TO )[0].toString() ); String sDate = (new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")).format(messages[i].getSentDate()); String sSubject = messages[i].getSubject(); String sContent = ""; //如果纯文本邮件内容 if ( messages[i].getContent() instanceof String ) { sContent = (String) messages[i].getContent(); } //如果HTML格式邮件内容 else { sContent = ((MimeMultipart)messages[i].getContent()).getBodyPart(0).getContent().toString(); } //插入数据库 String sUpdateQuery = "insert into inbox values('" + sUsername + "', '" + sFrom + "', '" + sTo + "', '" + sDate + "', '" + sSubject + "', '" + sContent + "', '0') "; stmt.executeUpdate( sUpdateQuery ); } conn.commit(); conn.setAutoCommit(true); //删除服务器上的邮件 for ( int i=0; i<messages.length; i++ ) { messages[i].setFlag( Flags.Flag.DELETED, true ); } folder.close(true); store.close(); //重新获取数据库中的所有邮件,并表示在页面上 Vector vMails = new Vector(); sQuery = "select * from inbox where username='" + sUsername + "' order by send_time desc"; rs = stmt.executeQuery( sQuery ); while ( rs.next() ) { String sFrom = rs.getString(2); String sTo = rs.getString(3); String sDate = rs.getString(4); String sSubject = rs.getString(5); String sContent = rs.getString(6); String sReadFlg = rs.getString(7); MailContent mc = new MailContent(); mc.setSender(sFrom); mc.setReceiver(sTo); mc.setSendTime(sDate); mc.setSubject(sSubject); mc.setContent(sContent); mc.setReadFlg(sReadFlg); vMails.add( mc ); } myValues.put( "mails", vMails ); //计算总页数 int countPerPage=10; int totalMail=vMails.size(); int totalPage=0; if(totalMail%countPerPage==0){ totalPage=totalMail/countPerPage; } else{ totalPage=totalMail/countPerPage+1; } int curPage=0; myValues.put("curPage", new Integer(curPage)); myValues.put("totalPage", new Integer(totalPage)); } catch(Exception e) { e.printStackTrace(); mySession.setAttribute("errMsg","查找邮件时出现错误!"); return false; } finally { try { rs.close(); stmt.close(); }catch(Exception ex) { } } }catch(Exception ex) { ex.printStackTrace(); mySession.setAttribute("errMsg","查找邮件时出现错误!"); return false; } return true; } } }[/code] js [code="java"]window.onload = windowLoad; //--------------------------------- //页面载入时调用 function windowLoad() { cmnWindowLoad(); } //查看具体邮件 function gotoMail( index ) { form_main.mailIndex.value = index; form_main.submit(); } //前后翻页 function gotoPagePosition( gotoCount ) { form_main.pageId.value = "goto"; form_main.gotoPageNo.value = gotoCount; form_main.submit(); }[/code]
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
《阿里巴巴开发手册》读书笔记-编程规约
Java编程规约命名风格 命名风格 类名使用UpperCamelCase风格 方法名,参数名,成员变量,局部变量都统一使用lowerCamelcase风格 常量命名全部大写,单词间用下划线隔开, 力求语义表达完整清楚,不要嫌名字长 ...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
Python绘图,圣诞树,花,爱心 | Turtle篇
1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.speed('fastest') circle.up() square = turtle.Turtle()
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
为什么听过很多道理,依然过不好这一生?
记录学习笔记是一个重要的习惯,不希望学习过的东西成为过眼云烟。做总结的同时也是一次复盘思考的过程。 本文是根据阅读得到 App上《万维钢·精英日课》部分文章后所做的一点笔记和思考。学习是一个系统的过程,思维模型的建立需要相对完整的学习和思考过程。以下观点是在碎片化阅读后总结的一点心得总结。
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
Linux 命令(122)—— watch 命令
1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 [1] watch(1) manual
Linux 命令(121)—— cal 命令
1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 [1] cal(1) manual
记jsp+servlet+jdbc实现的新闻管理系统
1.工具:eclipse+SQLyog 2.介绍:实现的内容就是显示新闻的基本信息,然后一个增删改查的操作。 3.数据库表设计 列名 中文名称 数据类型 长度 非空 newsId 文章ID int 11 √ newsTitle 文章标题 varchar 20 √ newsContent 文章内容 text newsStatus 是否审核 varchar 10 news...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告(本文) 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧...... 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升
新来个技术总监,禁止我们使用Lombok!
我有个学弟,在一家小型互联网公司做Java后端开发,最近他们公司新来了一个技术总监,这位技术总监对技术细节很看重,一来公司之后就推出了很多"政策",比如定义了很多开发规范、日志规范、甚至是要求大家统一使用某一款IDE。 但是这些都不是我这个学弟和我吐槽的点,他真正和我吐槽的是,他很不能理解,这位新来的技术总监竟然禁止公司内部所有开发使用Lombok。但是又没给出十分明确的,可以让人信服的理由。 于...
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
2020金三银四,一篇文章教你如何征服面试官,拿到offer
2020年,跳槽面试就靠它们了,现在每天刷题,看源码文档,最近看的这些题目还是有些难度,有一部分我都要好好想一想才能回答出来,或者回答不出来,总的来说知识宽度够了深度还跟不上。所以要重点突破下底层的东西。这篇文章我总结了很久,希望对正在准备面试的同仁们有点帮助。没错我就是传说中的面霸!! 一. 面试准备 首先,是笔试题,这点是初级程序员绕不过去的坎。 笔试题一般的公司都会出的,除非你是大牛,可以选...
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问