私はJavaとMySQLを使ってこの小さなクイズを学校プロジェクト用に作成しました。今私のプロジェクトは正常に動作しますが、実験として私の質問に画像を追加しようとしました。 Question jFrameは質問とすべてのオプションをデータベースから直接取り出します.quesは最後に8つの列があり、 "path"はvarchar(500)です。ここで質問を追加する私のJavaコードは次のとおりです。 -MySQLのVarcharにバックスラッシュを追加
try {
Class.forName("java.sql.Driver");
Connection con = (Connection) DriverManager.getConnection(jdbcurl, user, pass);
Statement st = con.createStatement();
ResultSet rt = st.executeQuery("SELECT qno from ques order by qno desc limit 1");
// get last qno primary key
for (; rt.next();) {
qno = (Integer) rt.getObject(1); // save qno as int
}
nqno = qno + 1; // create new qno
if (path == null){
String query1 = "insert into ques values (" + nqno + ",'" + question + "','" + ans1 + "','" + ans2 + "','"
+ ans3 + "','" + ans4 + "','" + ca + "',null);"; // ca is correct answer and null is path
Statement st1 = con.createStatement();
st1.executeUpdate(query1);
System.out.println("query : "+query1);
JOptionPane.showMessageDialog(this, "Question added successfully! Without Image");}
else {
String query1 = "insert into ques values (" + nqno + ",'" + question + "','" + ans1 + "','" + ans2 + "','"
+ ans3 + "','" + ans4 + "','" + ca + "','"+path+"');";
System.out.println("query :" +query1);
Statement st1 = con.createStatement();
st1.executeUpdate(query1);
JOptionPane.showMessageDialog(this, "Question added successfully! with image");
}
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Error in code");
クエリが クエリだっ送ら '123'、 '123'、QUES値(12 '123'、 '123'、 '123' に挿入します、 '123'、 'F:\ JavaQuiz \ src \ javaquiz \ About.png'); いいえ、例外は処理されません。 しかし、SQLではパスは次のように保存されます。 - F:JavaQuizsrcjavaquizAbout.png
データベースではバックスラッシュは省略されています。私はそうしたくない。私のQuestion.javaでこのリンクを後で呼び出すことができるように
Please ..何か提案がありますか?
(私はこれがばかな質問であれば、私はプログラミングに新しいごめんなさいごめんなさい)Javaで
「F:\\ JavaQuiz \\ src \\ javaquiz \\ About.png」)のように2つのバックスラッシュを追加すると考えました。問題を修正します。 しかし、私はどのように私の文字列にそれを追加するのですか? –
path = path.replaceAll( "\\"、 "\\\\");すべての\を¥¥ –
に置き換えますIDEがエラーを返す:正規表現が無効です:予期しない内部エラー。 コードも例外をキャッチします。 –