使用扫描仪值从DB中提取数据

时间:2017-06-09 17:39:27

标签: java database jdbc java.util.scanner

我想对我编写的这段代码提供一些帮助。

想法是在扫描仪中输入用户名'nomU'(例如xx),并使用此用户名,程序将在我的数据库中搜索并带来与此用户名关联的所有'pref'。表名为'usermodel'。

try {
    Scanner sc = new Scanner(System.in);
    System.out.println("Veuillez saisir un mot :");
    String str = sc.nextLine();

    Statement stmt2 = null;
    String query2 = "SELECT pref FROM usermodel  WHERE nomU =" + str + "";
    stmt2 = connexion.createStatement();
    ResultSet resultat2 = stmt2.executeQuery(query2);
    while (resultat2.next()) {
        String pref = (String) resultat2.getString("pref");
        System.out.println("l' element , " + pref + ",est une préférence de l'utilisateur " + str + " .");
    }
} catch (SQLException e) {
}

这是表“usermodel”的样子

id     nomU     pref
-------------------------
1       xx      adblock
-------------------------
2       yy      grammarly
-------------------------
3       xx      avast
------------------------

所以nomU = xx的结果应该是(adblock和avast) 但它不起作用,当我输入用户名时没有任何反应, 我必须指出连接和一切都完好无损。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

字符串应该在String query = "SELECT pref FROM usermodel WHERE nomU = ?"; try (PreparedStatement prstm = connection.prepareStatement(query)){ prstm.setSting(str);//set your input the query ResultSet resultat2 = prstm.executeQuery(query2); while (resultat2.next()) { String pref = (String) resultat2.getString("pref"); System.out.println("l' element , " + pref + ",est une préférence de l'utilisateur " + str + " ."); } } 之间,但我不建议使用这种方式,这会导致语法错误或SQL注入,而你必须使用PreparedStatement:

// Code borrowed heavily from the OpenCV samples

#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/core/utility.hpp>
#include <opencv2/videoio.hpp>

#include <cctype>
#include <stdio.h>
#include <string.h>
#include <time.h>

using namespace cv;
using namespace std;
int main( int argc, char** argv )
{    
    // Command line argument parsing
    cv::CommandLineParser parser(argc, argv,
        "{help h usage ?|               | print this message        }"
        "{@vid_name     |               | video file                }"
        "{@frame_num    | 0             | start frame               }"
        "{@frame_count  | 100           | frames to extract         }"
        );

    if (parser.has("help"))
    {
        parser.printMessage();
        return 0;
    }

    string inputFilename = parser.get<string>("@vid_name");
    int frameNumber = parser.get<int>("@frame_num");
    int frameCount = parser.get<int>("@frame_count");
    if (!parser.check())
    {
        parser.printMessage();
        parser.printErrors();
        return -1;
    }

    // Open video
    VideoCapture capture;
    capture.open(inputFilename);
    if ( !capture.isOpened() )
    {
        fprintf(stderr, "Failed to open video\n");
        return -1;
    }
    double fps = capture.get(CV_CAP_PROP_FPS);
    size_t width = (size_t)capture.get(CV_CAP_PROP_FRAME_WIDTH);
    size_t height = (size_t)capture.get(CV_CAP_PROP_FRAME_HEIGHT);
    Size imgSz(width,height);
    size_t totalFrames = (size_t)capture.get(CV_CAP_PROP_FRAME_COUNT);

    // Open output video files        
    VideoWriter vidwriter;
    int codec = CV_FOURCC('M', 'J', 'P', 'G');
    vidwriter.open("clip.avi", codec, fps, imgSz, true);
    if ( !vidwriter.isOpened() ) 
    {
        fprintf(stderr, "Could not open an output video file for write\n");
        return -1;
    }

    // Extract subset of frames
    Mat frame;
    capture.set(CV_CAP_PROP_POS_FRAMES, frameNumber);
    for (int frameInd = frameNumber; frameInd < frameNumber+frameCount; ++frameInd)
    {
        capture >> frame;
        if ( frame.empty() ) 
            break;
        vidwriter.write(frame);
    }
    capture.release();

    printf("Success.\n");

    return 0;
}