2022-11-05
一、自增长的键值问题
1、说明:
将在数据库表单中添加数据的自增长的字段返回给用户
2、使用方式:
在预编译语句中,除了要传入sql语句外,还要传入一个参数“Statement.RETURN_GENERATED_KEYS”。其中“Statement”表示的是一个接口,“RETURN_GENERATED_KEYS”表示在执行sql语句的同时,返回自增长的键值对。
之后,输出自增长键值对使用的方式是“先创建一个预编译对象的自增长结果集(如:rs)使用的语句是“
ResultSet rs = pst.getGeneratedKeys();
”,之后输出语句为自增长结果集对象的getObject(放要获取的列数编号)”。注意,要将输出的语句放置到判断获得的结果集是否有下一个的判断语句中,例如:if(rs.next()){语句放置位置},其中rs表示的是结果集的对象。使用的语句是
ResultSet rs = pst.getGeneratedKeys();
if(rs.next()){
System.out.println("您的员工编号是" + rs.getObject(1));
}
package com.haha.problem;
import org.junit.Test;
import java.sql.*;
import java.util.Date;
import java.util.Scanner;
public class Problem4 {
@Test
public void test04() throws SQLException {
Scanner input = new Scanner(System.in);
System.out.println("请输入姓名:");
String ename = input.next();
System.out.println("请输入薪资:");
double salary = input.nextDouble();
System.out.println("请输入出生日期:");
String birthday = input.next();
System.out.println("请输入性别:");
String gender = input.next();
System.out.println("请输入手机号码:");
String tel = input.next();
System.out.println("请输入邮箱:");
String email = input.next();
input.close();
String url = "jdbc:mysql://localhost:3306/数据库名称?serverTimezone=UTC";
Connection conn = DriverManager.getConnection(url, "数据库用户名", "数据库密码");
String sql = "INSERT INTO t_employee(ename,salary,birthday,gender,tel,email,hiredate) VALUES(?,?,?,?,?,?,?)";
PreparedStatement pst = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
pst.setObject(1,ename);
pst.setObject(2,salary);
pst.setObject(3,birthday);
pst.setObject(4,gender);
pst.setObject(5,tel);
pst.setObject(6,email);
pst.setObject(7,new Date());
int len = pst.executeUpdate();
System.out.println(len>0?"添加成功":"添加失败");
ResultSet rs = pst.getGeneratedKeys();
if(rs.next()){
System.out.println("您的员工编号是" + rs.getObject(1));
}
pst.close();
conn.close();
}
}
二、批处理
1、说明:
批处理处理一般用于大批量的输入数据中使用。批处理中不是设置了一条数据就网数据库中添加一条数据,而是将添加的一些数据放置到缓冲区中,添加完后再放置到数据库中。如果缓冲池中满了以后,就会自动将数据放置到数据库中,清空缓冲池。
2、使用实例:
设置url(此处URL要多加一个参数,添加的参数是
rewriteBatchedStatements=true
,因为MySQL中batch没有自动开启,所以要告诉数据库开启缓冲),设置驱动管理类的连接,设置sql语句,设置连接对象的预编译,设置占位符的取值(将预编译对象先放置到缓冲池中),执行批处理,关闭流对象(连接对象、预编译对象)
3、代码实例:
package com.haha.problem;
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Problem5 {
@Test
public void test05() throws SQLException {
long start = System.currentTimeMillis();
String url = "jdbc:mysql://localhost:3306/数据库名称?serverTimezone=UTC&rewriteBatchedStatements=true";
Connection conn = DriverManager.getConnection(url, "数据库用户名", "数据库密码");
String sql = "INSERT INTO t_department VALUES(NULL,?,?)";
PreparedStatement pst = conn.prepareStatement(sql);
for(int i=1;i<=1000;i++){
pst.setObject(1,"测试部门名称"+i);
pst.setObject(2,"测试部门简介"+i);
pst.addBatch();
}
pst.executeBatch();
pst.close();
conn.close();
long end = System.currentTimeMillis();
System.out.println("耗时:"+(end - start));
}
}
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
由于fast-stemmer的问题,我很难安装我想要的任何rubygem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=
我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。
查看我的Ruby代码:h=Hash.new([])h[0]=:word1h[1]=h[1]输出是:Hash={0=>:word1,1=>[:word2,:word3],2=>[:word2,:word3]}我希望有Hash={0=>:word1,1=>[:word2],2=>[:word3]}为什么要附加第二个哈希元素(数组)?如何将新数组元素附加到第三个哈希元素? 最佳答案 如果您提供单个值作为Hash.new的参数(例如Hash.new([]),完全相同的对象将用作每个缺失键的默认值。这就是您所拥有的,那是你不想要的。您可以改用