-1

ここで私はsqliteデータベースを使用しています。このためのコードはここにあります:

using (SQLiteCommand cmd = new SQLiteCommand(query, conn))
{
    conn.Open();
    cmd.ExecuteNonQuery();

    cmd.CommandText = 
         "insert into users(name, password, priviledges) values(" +
          "'" + UsernameText.Text.Trim() + "', " + "'" + 
         QuickMethods.MD5(PasswordText.Password.Trim()) + "', " + "524287" + ")";
    cmd.ExecuteNonQuery();

    cmd.CommandText = "INSERT INTO company VALUES('name','" + CompanyName.Text.Trim() + "');";
    cmd.ExecuteNonQuery();

    cmd.CommandText = "INSERT INTO company VALUES('address','" + CompanyAddress.Text.Trim() + "');";
    cmd.ExecuteNonQuery();

    cmd.CommandText = "INSERT INTO company VALUES('phone','" + CompanyPhone.Text.Trim() + "');";
    cmd.ExecuteNonQuery();

    cmd.CommandText = "INSERT INTO company VALUES('email','" + CompanyEmail.Text.Trim() + "');";
    cmd.ExecuteNonQuery();

    conn.Close();
}

行cmd.ExecuteNonQuery()でそれを解決する方法で例外が発生しました。

4

1 に答える 1

-2

あなたの最初cmd.ExecuteNonQuery();は犯人です。接続開口部の下にあるもの。

それまでコマンドが設定されていないのでエラーになると思います。コメントすれば問題ないはずです。

編集

それがうまくいかなかった場合、この問題には2つの理由が考えられます。

まず、適切なデータベースに接続されますが、そのようなテーブルはありません。

2番目-間違ったデータベースへの接続が行われます。このような場合、エラーは発生しません。指定した場所にデータベースファイルを作成します。データベースを開きます。ただし、データをフェッチ/更新するときにこのエラーが発生します。このような場合、指定された場所には0KBのデータベースが含まれます。

この質問への私の答えはあなたを助けます

注/警告は質問に関連し、回答には関連しません:

SQLインジェクションに常に注意してください。パラメータ化されたクエリ(@を使用したもの)を使用します。

SQLインジェクションの詳細

于 2012-05-15T15:21:51.993 に答える