Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从servlet连接到数据库。我已经尝试了以下代码,但每次控制都会出现异常_Java_Database_Servlets_Database Connection - Fatal编程技术网

Java 如何从servlet连接到数据库。我已经尝试了以下代码,但每次控制都会出现异常

Java 如何从servlet连接到数据库。我已经尝试了以下代码,但每次控制都会出现异常,java,database,servlets,database-connection,Java,Database,Servlets,Database Connection,如何从servlet连接到数据库。我已经尝试了以下代码,但每次控制都会出现异常 try { int num_rows = 0; Connection con = null; Statement st = null; Statement search = null; ResultSet rs = null; ResultSet

如何从servlet连接到数据库。我已经尝试了以下代码,但每次控制都会出现异常

   try
            {
            int num_rows = 0;
            Connection con = null;
            Statement st = null;
            Statement search = null;
            ResultSet rs = null;
            ResultSet searchRS = null;

            // Connecting to the database
            PrintWriter out = response.getWriter();
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/employees","root","");
            st = con.createStatement(); 
            rs = st.executeQuery("select employees.first_name,employees.last_name,employees.gender,employees.hire_date,departments.dept_name,salaries.salary from employees,departments,salaries,dept_emp where employees.emp_no=salaries.emp_no AND dept_emp.emp_no=employees.emp_no AND dept_emp.dept_no=departments.dept_no AND salaries.to_date='9999-01-01' AND (employees.first_name='"+Sname+"' OR employees.last_name='"+Sname+"')");
            //Retrieval of data from result set retrieved from database

            String[][] str = new String[10][6];

                while( rs.next())
                {
                    str[num_rows][0] = rs.getString("first_name");
                    str[num_rows][1] = rs.getString("last_name");
                    str[num_rows][2] = rs.getString("gender");
                    str[num_rows][3] = rs.getString("hire_date");
                    str[num_rows][4] = rs.getString("dept_name");
                    str[num_rows][5] = rs.getString("salary");
                    num_rows++;
                }

                if(num_rows <10)
                {
                    isLast = true;
                    var = 0;
                }   

            request.setAttribute("listvalue",str);
            request.setAttribute("rows",num_rows);
            RequestDispatcher RequestDispatcherObj =request.getRequestDispatcher("SearchName.jsp");

            RequestDispatcherObj.forward(request, response);

            out.flush();
            con.close();
            var = var +10;
            }
    catch(Exception e)
    {
        e.printStackTrace();
    }
试试看
{
int num_rows=0;
连接con=null;
语句st=null;
语句搜索=null;
结果集rs=null;
结果集searchRS=null;
//连接到数据库
PrintWriter out=response.getWriter();
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
con=DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/employees“,”根“,”);
st=con.createStatement();
rs=st.executeQuery(“选择员工。姓名,员工。姓氏,员工。性别,员工。雇用日期,部门。部门名称,工资。员工的工资,部门,工资,部门emp,其中员工。emp编号=工资。emp编号和部门emp编号=员工。emp编号和部门emp编号=部门。部门编号和工资。截止日期='9999-01-01'和(employees.first_name='“+Sname+””或employees.last_name='“+Sname+”);
//从从数据库检索的结果集中检索数据
字符串[][]str=新字符串[10][6];
while(rs.next())
{
str[num_rows][0]=rs.getString(“first_name”);
str[num_rows][1]=rs.getString(“姓氏”);
str[num_rows][2]=rs.getString(“性别”);
str[num_rows][3]=rs.getString(“雇用日期”);
str[num_rows][4]=rs.getString(“部门名称”);
str[num_rows][5]=rs.getString(“工资”);
num_rows++;
}

如果(num_rows您的字符串数组可以保存10条记录;您可能从数据库中获得了更多的记录

你可以试试这个-

while( rs.next() && num_rows < 10 )
while(rs.next()&&num_行<10)

如果您需要收集所有记录,最好使用类似列表的收集方式。

对我来说,这条线看起来很像

RequestDispatcherObj.forward(request, response);
正在产生问题。它正在将请求转发到其他位置。
requestdispatcheobj
可能已关闭了
out
对象。因此,在此之后使用
flush()和write()
将导致
非法状态异常

out.flush();
con.close();
var = var +10;

因此,请确保情况并非如此。

您确定要在servlet中包含数据库代码吗?此外,如果您谈论异常,请始终包含stacktrace。您没有在代码中声明var的类型,但无论如何,我们需要异常。您需要正确地为列名命名,例如选择employees。first\u name应该是select employees.first_name作为first_name,只有这样才能读取rs.getString(“first_name”);去掉
PrintWriter out=response.getWriter();
out.flush();
这是
RequestDispather#forward(请求,响应)的要点
。您可以使用
forward
转发到jsp资源以呈现您的响应。为什么会导致错误?好的,但它会使
对象处于打开状态。@informatik01除非它们的意思完全不同,是的。请自己尝试。在
doGet()
中,放入
System.out.println(“hello”);request.getRequestDispatcher(“some.jsp”).forward(请求,响应);System.out.println(“world”);
看看你得到了什么。如果说控制,你的意思是你不能写入响应,那么我同意你/他们,因为它应该已经提交了。@SotiriosDelimanolis Your“在某个时候,forward返回执行。。。“在某种程度上把我弄糊涂了,我以为你的意思是在提交了它返回的响应之后,“你可以再次向输出写入一些内容”之类的东西。我的注意力不集中了,我必须去睡觉了。再次抱歉,伙计)和一些自定义对象,而不是
字符串[]