我只是想知道,测试JDBC相关方法的最佳方法是什么?如添加用户,禁止用户等
(使用JUnit)
我应该将所有的void方法设置为布尔值,如果它们有效则返回true,如果它们没有则返回false,并在JUnit测试中相应地断言这些值?
这只是找到最佳实践的一般问题.
谢谢!
我正在尝试向我的 user_info 表添加外键约束,这是我的用户表 (user_id) 中的主键:
ALTER TABLE user_info
ADD CONSTRAINT fk_userID
FOREIGN KEY (user_id)
REFERENCES users(user_id);
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
Error starting at line 26 in command:
ALTER TABLE user_info
ADD CONSTRAINT fk_userID
FOREIGN KEY (user_id)
REFERENCES users(user_id)
Error report:
SQL Error: ORA-02298: cannot validate (CLAYBANKS.FK_USERID) - parent keys not found
02298. 00000 - "cannot validate (%s.%s) - parent keys not found"
*Cause: an alter table validating constraint failed because the table has
child records.
*Action: Obvious
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在尝试解析字符串表达式(即"6 + 10*2-5")并使用for-case语句将答案计算为double.但是我收到错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:470)
at java.lang.Integer.parseInt(Integer.java:499)
at Calculator.random(Calculator.java:50)
at Calculator.main(Calculator.java:210)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
public static double random(String exp) {
double primeResult = 0;
for (int i=0; i<exp.length();i++) {
double left = Integer.parseInt(exp.substring(0,i));
double right = Integer.parseInt(exp.substring(i+1,i+2));
switch(exp.charAt(i)) {
case '*':
primeResult = left * right;
break;
case '/':
primeResult = left / right;
break;
case '+':
primeResult = left + right;
break;
case '-':
primeResult = left - right;
break; …Run Code Online (Sandbox Code Playgroud) 我正在尝试用Java设置用户注册应用程序.这是我当前的代码(产生错误)
import java.util.ArrayList;
public class Registration {
private static ArrayList<String> userlist = new ArrayList<String>();
public static void requestRegistration(String username, String password, String f_name, String l_name, String email)
{
userlist.add(username, password, f_name, l_name, email);
}
Run Code Online (Sandbox Code Playgroud)
此代码无法运行,因为您无法向数组添加多个参数.我在想我的数组列表应该是一个String数组而不仅仅是String.有任何想法吗?
所以我有代码:
public void addUser(
String username, String password,
String f_name, String l_name, String email)
{
try
{
//conn.setAutoCommit(false);
pstmnt = conn.prepareStatement("INSERT INTO users VALUES (?,?,?,?)");
pstmnt.setString(1, "user_id_increment.nextval");
pstmnt.setString(2, username);
pstmnt.setString(3, password);
pstmnt.setInt(4, 0);
pstmnt.execute();
Run Code Online (Sandbox Code Playgroud)
在OraclebI中有序列:
--Auto incrementing the user_id
CREATE SEQUENCE user_id_increment
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 20;
Run Code Online (Sandbox Code Playgroud)
但是,我在eclipse中得到了异常:
Error: ORA-01722: invalid number
Run Code Online (Sandbox Code Playgroud)
我以为调用序列name.nextval会给我序列中的下一个值,当插入任何其他整数时,setString会起作用.
有任何想法吗?
所以我在这里有代码将我的用户名参数值发送到我的index.jsp欢迎页面:
response.sendRedirect("index.jsp?username=" + username);
Run Code Online (Sandbox Code Playgroud)
该名称显示在我的index.jsp页面中,其中包含:
<%= "Welcome " + request.getParameter("username")%>
Run Code Online (Sandbox Code Playgroud)
但是,URL显示的信息是我不想要的:
http://localhost:8088/Trading_Platform_Web/index.jsp?username=ClayBanks1989
Run Code Online (Sandbox Code Playgroud)
任何想法如何掩盖这个?
此外,更希望仅显示我的数据库中的名字.但我们可以专注于手头的任务.
我正在尝试在用户登录后使用所有用户字段创建用户对象,以便我可以从用户的类中检索任何给定的属性.这是User类.
public class User {
private String username;
private String password;
private String f_name;
private String l_name;
private String email;
private String dob;
private int user_id;
public User(){}
public User(String username, String password)
{
this.username = username;
this.password = password;
}
public User(String username, String password, String f_name, String l_name, String email, String dob, int user_id)
{
this.f_name = f_name;
this.l_name = l_name;
this.username = username;
this.password = password;
this.email = email;
this.dob = dob;
this.user_id = user_id;
}
Run Code Online (Sandbox Code Playgroud)
我有所有领域的getter和setter.所有用户字段也存储在Oracle数据库中. …
我不知道为什么,但我似乎无法让这个工作.
这是我放大字体的功能.
<script type="text/javascript">
function growText() {
var text = document.getElementById("t_left_text");
text.font-size=22px;
</script>
Run Code Online (Sandbox Code Playgroud)
这就是我所说的
<div id="t_left" onclick="growText()">
<br />
<p id="t_left_text">Mountains are beautiful land structures <br /> that are a result of plate tectonics.</p>
<br />
</div>
Run Code Online (Sandbox Code Playgroud) 出于某种原因,当我在这里测试我的"100-50-40"时,我得到"60"而不是"10".所有其他组合都有效,例如"10 + 20"和"40-20".当我尝试连续减去多个数字时,会出现问题.有任何想法吗?
public double add(String exp){
String left = "";
String right = "";
double leftValue = 0;
double rightValue = 0;
double answer = 0;
for(int i=0;i<exp.length();i++)
{
if(exp.charAt(i)=='+')
{
right = exp.substring(i+1, exp.length());
leftValue = subtract(left);
rightValue = add(right);
answer = leftValue + rightValue;
return answer;
}
else
{
left = left + exp.substring(i,(i+1));
}
} // End for loop
answer = subtract(exp);
return answer;
} // End add method
//guaranteed there are no addition operators in …Run Code Online (Sandbox Code Playgroud) 我有一个方法设置为添加用户ArrayList,并返回false添加相同的用户:
public boolean addUser(K pass, V user)
{
if (username.contains(user))
{
return false;
}
else
{
password.add(pass);
username.add(user);
size++;
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个JUnit测试,assertFalse(true)因为这是我的方法在添加两个具有相同名称的用户时返回的:
@Test
public void testAddingTwoOfTheSameUserToArrayList() {
User<String, String> user1 = new User<String, String>();
user1.addUser("password", "SpeedinDave");
user1.addUser("password", "SpeedinDave");
assertFalse(true);
}
Run Code Online (Sandbox Code Playgroud)
但是,测试总是错误(红色条).有任何想法吗?
当我将用户添加到数组列表时,我有这个代码写入文件.代码工作正常:
public void writeToFile(String content)
{
try {
File file = new File("H:/JavaWorkspace/TradingPlatformProject/User_Report.txt");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content + "\n" );
bw.close();
logger.info("Recorded to User Activity file");
} catch (IOException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
当用户执行不同的操作时(例如,请求权限升级),我想写入单独的文件.有没有办法可以写入新文件"UserRequests.txt"而不复制此代码?
到目前为止,我有这个解析两个不同的代码 字符串 操作数加倍并将它们加在一起
如何修改它以便它可以添加任意数量的 字符串 操作数?
double addMultipleDigits(String exp)
{
ArrayList<Double> wholeExpression = new ArrayList<Double>();
double answer = 0;
for(int i=0;i<exp.length();i++)
{
if(exp.charAt(i)=='+')
{
answer=Integer.parseInt(exp.substring(i-1, i)) + Integer.parseInt(exp.substring(i+1, i+2));
wholeExpression.add(answer);
System.out.println(wholeExpression.get(0));
}
}
return answer;
}
Run Code Online (Sandbox Code Playgroud) java ×10
jdbc ×4
oracle ×3
arraylist ×2
for-loop ×2
junit ×2
add ×1
arrays ×1
case ×1
file-io ×1
foreign-keys ×1
getparameter ×1
html ×1
if-statement ×1
javascript ×1
login ×1
methods ×1
onclick ×1
sequence ×1
servlets ×1
sql ×1
subtraction ×1
testing ×1