@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

NullReferenceException

1
投稿者投稿内容
ぶらんどん
常連さん
会議室デビュー日: 2005/11/18
投稿数: 32
投稿日時: 2005-11-18 16:35
はじめて投稿します。
今仕事でASP(VB.NET)を使用し、WEBアプリケージョンの開発をしているんですけど、
どうしてもわからないバグが出るのでわかる人がいたら教えてください。

環境は
.NET Framework1.1
MySQL ODBC 3.51 Driver
IIS 5.1

です。

ソースは
Sub btnUpdate_Click(sender As Object, e As EventArgs)
Dim CommandText As String = "UPDATE xxx SET xxx=?, xxx=?, xxx=?, xxx=? where xxx=?"
Dim myConnection As New OdbcConnection(DBConnectString)
Dim myCommand As New OdbcCommand(CommandText, MyConnection)
Dim i As Integer

If Page.IsValid = False Then
lblError.Text = "入力データは有効ではありません"
Exit Sub
End If

Dim dateValue As Date
Try
dateValue = Functions.StringToDate(valid_date.text)
Catch
lblError.Text = "日付データは有効ではありません"
Exit Sub
End Try

myConnection.Open()
myCommand.Parameters.Add(New OdbcParameter("", OdbcType.Varchar)).Value = xxxx
myCommand.Parameters.Add(New OdbcParameter("", OdbcType.VarChar)).Value = xxxx
myCommand.Parameters.Add(New OdbcParameter("", OdbcType.DateTime)).Value = xxxx
myCommand.Parameters.Add(New OdbcParameter("", OdbcType.Text)).Value = xxxx
myCommand.Parameters.Add(New OdbcParameter("", OdbcType.Int)).Value = xxxx

Try
i = myCommand.ExecuteNonQuery()
Finally
myConnection.close()
End Try

If Not i = 1 Then
lblError.Text = "データを更新できません"
Exit Sub
End If

Response.Redirect(FinishURL & page_id.text)
End Sub

こんな感じです。
ボタンを押したら、更新する仕様になっています。

エラー何ですけど、
i = myCommand.ExecuteNonQuery()
の部分でNullReferenceExceptionが出ます。

しかも、毎回ではなく一日に一回くらいのペースで不定期に出るんです。

誰かわかりましたらご鞭撻のほどよろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-18 16:51
引用:

ぶらんどんさんの書き込み (2005-11-18 16:35) より:

しかも、毎回ではなく一日に一回くらいのペースで不定期に出るんです。


myCommand が Null に... 考えられないですね。
トレース ログはないのでしょうか?
Catch 句を追加して例外の詳細をゲットしましょう。
詳細を見れば、自己解決できるかもしれませんね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ぶらんどん
常連さん
会議室デビュー日: 2005/11/18
投稿数: 32
投稿日時: 2005-11-18 16:57
お返事ありがとうございます。
PageのディレクティブにTrace="True"を追加して、

Try
Trace.Write("myCommand",myCommand.CommandText)
i = myCommand.ExecuteNonQuery()
Finally
myConnection.close()
End Try

のようにトレースをしてみたのですが。
バグが出たときにもセレクト文は表記されました。
変なトレースの仕方ですみません;

ODBCのトレースもしようとして起動させて、
バグを出そうとしても出なくなってしまいます。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-11-18 17:20
MySQL Bugsは見てみた?現象として近いのは「MySQL Bugs: #11052: Attempting to INSERT null values into nullable columns => exception, crash」辺りかな。もし該当するBUGがなければ、レポートしよう。正常に動いているなら、NullReferenceExceptionはあり得ないと思う。

ちなみにODBC.NETを使わずに、MySQL Connector/Netを使うのが良いと思う。

[ メッセージ編集済み 編集者: 甕星 編集日時 2005-11-18 17:21 ]
ぶらんどん
常連さん
会議室デビュー日: 2005/11/18
投稿数: 32
投稿日時: 2005-11-18 17:39
お返事ありがとうございます、甕星さん。
確認してみます。
1

スキルアップ/キャリアアップ(JOB@IT)