1

私がやりたいのは、テキストボックスが空のときにデータベースに Null を挿入することだけです。

 --ACCOUNT

 AS
 BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SET IDENTITY_INSERT account ON


  INSERT INTO dbo.account
      ( 
        AccntID                   ,
        managedby                 ,
        AccountHolder             ,
        Description               ,
        AccountType               ,
        ContactPerson             ,
        ContactNumber             ,
        EmailAddress              ,
        Address                   ,
        ClientTYpe                ,
        SchemeType                ,
        SalesManager              ,
        DateCreated               ,
        Login                     ,
        Password                  ,
        Balance                   ,
        FilterOption              ,
        Enable22                  ,
        AllowExtendedConfig                  
      ) 
-- Insert statements for procedure here

 VALUES (@AccntID, @managedby, @AccountHolder, @Description, @AccountType, @ContactPerson, @ContactNumber, @EmailAddress, @Address, @ClientType, @SchemeType, @SalesManager, @DateCreated, @Login, @Password, @Balance, @FilterOption, @Enable22, @AllowExtendedConfig)
SET IDENTITY_INSERT account OFF



END

テキストボックスが空のときにデータベースに NULL 値を追加する最良の方法は何ですか?

4

4 に答える 4

1

新しいメソッドよりも軽いものを検討してください:

    Cmd.Parameters.AddWithValue("@AccntID", IIF(String.IsNullOrEmpty(TextBox1.Text),  DBNull.Value, TextBox1.Text)) 

ただし、残りについては、SqlDataAdapter前に提案したように a を使用します。

于 2012-10-22T15:36:39.570 に答える
1

次のようなヘルパー関数を設定します。

Public Function DbNullOrStringValue(ByVal value As String) As Object
    If String.IsNullOrEmpty(value) Then
        Return DBNull.Value
    Else
        Return value
    End If
End Function

したがって、最初のコード ブロックは次のように呼び出すことで簡略化されます。

Cmd.Parameters.AddWithValue("@AccntID", DbNullOrStringValue(TextBox1.Text)) 
Cmd.Parameters.AddWithValue("@managedby", DbNullOrStringValue(TextBox2.Text)) 
Cmd.Parameters.AddWithValue("@AccountHolder", DbNullOrStringValue(TextBox3.Text)) 
Cmd.Parameters.AddWithValue("@Description", DbNullOrStringValue(TextBox4.Text)) 
Cmd.Parameters.AddWithValue("@AccountType", DbNullOrStringValue(TextBox5.Text))

CmdあなたのSqlCommanadオブジェクトです

于 2012-10-22T08:18:10.200 に答える
0

ストアドプロシージャでは、次を使用できます。

仮定:パラメーター名は@TextDataです

 NULLIF(LTRIM(RTRIM(@TextData)),'')

@TextData =''の場合、NULLを返します。

于 2012-10-23T10:59:06.873 に答える
0

最善の方法は、継承されたテキスト ボックスに追加機能を追加することです。

Public Class MyText
    Inherits TextBox

    'Either change default text property (but this will bug you while comparing text property)
    Public Overrides Property Text() As String
        Get
            Return MyBase.Text
        End Get
        Set(ByVal value As String)
            MyBase.Text = value
        End Set
    End Property

    'Best way will be to write new property to use in sql query
    Public ReadOnly Property TextSQL() As String
        Get
            If Me.Text = String.Empty Then
                Return "NULL"
            Else
                Return Me.Text
                'Return "'" & Me.Text & "'" 'or this
            End If
        End Get
    End Property
End Class

アプリケーションでこのテキスト ボックスを使用する

cmd.Parameters.AddWithValue("@accountholder", txt_accHolder.TextSQL)
于 2012-10-22T13:20:18.587 に答える