](VB.Net)パラメタ使ったSQLで、NULL値を入れる。>>>(SQL)テーブル名にハイフン入ってる時はクォートする必要ありSQLiteでついハイフン(-)入のテーブルを作ってしまい、以下の用なクエリを実行したらエラーになりました。name='moe';テーブル名にハイフンが入っていると、ダメなようです。Server)も同様みたいです。解決策としては、ハイフンを付けないか、以下のようにクォートしてやるかです。name='moe';しばらくSQLやDB触ってないとこうなっちゃいますね。SQL(PHP)PDOで、SQLiteにアクセスしてみたPHPで多分初めてSQLiteを使おうと思ってます。Object)というDBアクセスの抽象化レイヤがあるみたいで、これを使うとどのデータベースを使っているかを気にすることなく使え、DBを移行した際にもさしてソースに変更加えなくていいようです。(ただし、O/Rマッピングをしてくれるわけではないので、完全な抽象化をしたければCakePHPのようなフレームワークを使った方がいいかもしれません。PDOを使うにはDBごとにPDOのモジュールがインストールし、php.iniで使うように設定しなければなりません。(まぁ大抵のレンタルサーバはsqlite2のPDOモジュールは入ってると思いますが。クラスのインスタンスを作成するだけでいいようです。入れたり、unset(変数)を実行するだけで切断となります。囲むようにしておけばOKです。SQLをすぐに実行する場合は、下記のようにPDOインスタンスのqueryメソッドを実行し、引数にクエリ文を入れたらいいようです。オブジェクトとして返ってきます。メソッドを使うと、結果を全て配列にしてくれるので、PHPでは操作しやすいですね。die();}パラメータ(プレースホルダ)を使ってSQLクエリを投げることもできます。(プリペアドステートメント)パラメータは名前付きパラメータと名前無パラメータが使えるようです。メソッドでも指定できます。下記のような感じです。//bindParamメソッドでは値のリテラルを引数に指定してはいけないので注意。'DBにデータ追加失敗。die();}また、トランザクションを有効にするには、下記のようにしてやるといいようです。ログインでも四苦八苦する時があります。(MySQL)スクリプトファイルからクエリを実行する方法では、MySQLクライアントにログインしてから外部ファイルを読み込んでますが、今回はコマンドラインから直接外部ファイルを読み込むための方法です。こんな感じでOKみたいです。後に空白入れずにパスワードを入れる部分ですね。(空白を入れてしまっていました)外部ファイルは入力リダイレクト(<)でファイルを指定するだけでいけます。データベースログインユーザと、各データベースのユーザをSQLで列挙する方法です。テーブルに定義されているようです。テーブル定義されているようです。下記のようなSQLで確認できます。クエリ実行時に「式が複雑すぎます。」という例外で怒られました。確かに、WHERE句に相当数の条件を入れています。(パラメータクエリを使ってます。WHERE句に条件大量にあるとダメみたいです。具体的のどれくらいの数を超えたらNGかというのは見つかりませんでした。条件が大量の設定してます。IN句を使うべきと同僚に言われてました。言われてみれば、そんなのもあったなと。今まで、副問い合わせで複数値が返るときにか使ってませんでした。IN句に置き換えたらエラーはでなくなりましたとさ。)ま、結局は3流PGのSQLの知識不足ということでした。いう純粋なSQLに近い形しないとダメなようです。/*Accessだとヒットする。/*Accessだとヒットしない。コードに移植してたんですが、これに気付かずちょっとハマってしまいした。経由になるので、これからはこっち使ったほうが安全ですね。比較で解説されてます。下記の引用部分が、その仕様について言ってるところですね。組み合わせて使う場合だけです。ワイルドカード文字を使うと、リテラルとして解釈されます。ワイルドカード文字がリテラルとして解釈されます。オブジェクトを使って、SQLクエリを書いたんですが、どうも挙動がおかしいのです。使いパラメータで抽出条件となる値を設定してます。サブクエリを書いた位置によって、「抽出条件でデータ型が一致しません。」とかいうエラーがでたり、明らかに条件に一致するデータがあるのに抽出できなかったりとするのです。何かの原因でパラメータの順序が入れ替わっているようです。追加した順番で適用されます。クエリを実行すると、予期しない結果を返す場合があるというのを見つけました。使い、ここで宣言したパラメータ変数(?)の順番で、パラメータを設定すればいいようです。この原因探るのに数時間かかりました。この現象気付く人も結構少ないんじゃないでしょうか。バグってのはほんと勘弁してほしいですよね。現在日時を取得して、整数の文字列として保存する方法です。変える方法にしてみました。型のフィールドへは暗黙的キャストで入れれるので、特に何もしてません。いうデータベースを運用しているとします。ロールを持っているとします。ファイルを移してアタッチします。全体のセキュリティには表示されません。下記のような状態です。ユーザ削除した時と同じ現象ですね。ログインができなくなってます。マッピングができません。N'userA'GOこのように、マッピングされていない状態となってしまいます。マッピングされるようになりました。コマンドでやったほうが楽ですね。バックアップ時(復元時)の進行状況を取得しプログレスバーに表示する(説明編)の続きとういより、文字数オーバーで載せれなかったコードです。(なお、プログレスバーを貼り付けているフォームクラスのコードは面倒なので掲載してません。'復元時だとこういうコードになります。'プログレスバー表示用別スレッドを停止。プレブレスバー表示フォームを閉じる。進行状況ダイアログのプログレスバーに進捗を表示する。SqlConnection.InfoMessageのイベントハンドラ。ApplicationExceptionとして例外生成(しかし、この例外はスローされないっぽい。パーセント処理されました。'進行状況表示クラス(このクラスのコードは省略。プログレスバーを閉じる。プログレスバーを表示する。プログレスバー表示クラスを別スレッドで作成し、表示。別スレッドで動くメソッド。