CARA untuk: Mengelola tanda kutip di dipenggal SQL literal dengan menggunakan ADO.NET dan Visual Basic.NET

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 311023 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini menunjukkan bagaimana Anda dapat mengatur kutipan tanda di nilai string ketika Anda menggabungkan pernyataan SQL. Artikel menyediakan solusi sampel yang menggunakan Sql dikelola penyedia (Microsoft SQL Server). Artikel ini juga menyediakan contoh Microsoft Access yang menggunakan Microsoft OLE penyedia DB dan data yang terkait dengan akses kelas.

Daftar berikut menguraikan fitur perangkat keras, perangkat lunak, jaringan infrastruktur, dan paket layanan yang diperlukan:
  • Microsoft Windows XP, Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, atau Microsoft Windows 2000 Advanced Server
  • Microsoft.NET Framework
  • Microsoft Access
  • Microsoft SQL Server

Menciptakan Visual Basic.Aplikasi NET konsol

Langkah ini menunjukkan bagaimana untuk membuat baru Visual Basic.NET Aplikasi konsol bernama QuoteDemo.
  1. Mulai Microsoft Visual Studio.NET.
  2. Pada Berkas menu, titik Baru, lalu klik Project.
  3. Dalam Proyek baru kotak dialog, klik Proyek-proyek Visual Basic di bawah Jenis proyek, lalu klik Aplikasi konsol di bawah Pola acu.
  4. Dalam Nama kotak teks, ketik QuoteDemo.
  5. Klik Oke untuk membuka proyek.

Sampel yang mengelola tanda kutip di dipenggal pernyataan SQL

Dalam bagian ini, Anda membuat contoh yang menunjukkan cara menggunakan The Ganti metode String kelas. Sampel ini menggantikan tanda kutip tunggal dengan dua berdekatan tanda kutip tunggal untuk memastikan bahwa data diformat dengan benar ketika Anda menggabungkan nilai-nilai untuk sebuah pernyataan SQL. Kode ini demonstrasi menggunakan SQL MASUKKAN pernyataan di Karyawan Tabel Northwind database.

Keduanya SQL Server dan akses sampel yang terkandung dalam artikel ini referensi FixString metode. Anda harus memasukkan metode ini untuk contoh baik untuk berfungsi dengan baik. Langkah-langkah berikut menunjukkan cara untuk melakukannya:
  1. Klik kanan Module1.VB Solusi Explorer, dan kemudian klik Lihat kode.
  2. Menambahkan metode berikut untuk modul:
    Private Function FixString(ByVal SourceString As String, ByVal StringToReplace As String, ByVal StringReplacement As String)
            SourceString = SourceString.Replace(StringToReplace, StringReplacement)
            Return SourceString
    End Function
    						
    Metode sebelumnya menggunakan Ganti metode String objek. Anda dapat menggunakan metode ini untuk mengganti karakter dengan lain pilihan. Parameter input termasuk asli (stringSourceString), string yang Anda ingin mengganti ()StringToReplace), dan string yang ingin Anda gunakan ()StringReplacement).

    CATATAN: Untuk substitusi string yang lebih kompleks, lihat berikut Microsoft.NET kelas perpustakaan dokumentasi:
    StringBuilder kelas
    http://MSDN.Microsoft.com/en-us/library/System.text.stringbuilder.aspx
  1. Tambahkan referensi namespace berikut untuk Module1.vb:
    Imports System.Data.SqlClient
    Imports System.Text
    					
  2. Menambahkan metode berikut untuk Module1.vb:
        Private Sub RunSqlDemo()
            'Create a variable to hold the last name and the first name.
            Dim Fname As String = "Susan"
            Dim Lname As String
    
            Console.Write("Type Last Name (SQL Server Sample): ")
            Lname = Console.ReadLine()
    
            'Call FixString to replace a single quotation mark with two
            'adjacent single quotation marks.
            Lname = FixString(Lname, "'", "''")
            Console.WriteLine("Modified value: " & Lname)
    
            'Although the Fname variable in this sample is fine,
            'run Replace on this variable also.
            Fname = FixString(Fname, "'", "''")
    
            'Use a StringBuilder object to build the SQL statement.
            Dim sb As New StringBuilder()
            sb.Append("INSERT INTO Employees(LastName, FirstName) Values( '")
            sb.Append(Lname)
            sb.Append("','")
            sb.Append(Fname)
            sb.Append("')")
    
            'Present the SQL statement to the console, and include the modified
            'values.
            Console.WriteLine("SQL string: " & sb.ToString())
    
            'Create the connection string.
            Dim myConStr As String = "Server=localhost;Database=Northwind;UID=myUserID;PWD=myPassword"
            Dim myConn As SqlConnection = New SqlConnection(myConStr)
            Dim myCmd As SqlCommand = New SqlCommand(sb.ToString(), myConn)
    
            Try
                'Open the connection.
                myConn.Open()
                myCmd.ExecuteNonQuery()
                Console.WriteLine("Values inserted into table (SQL Server Sample)")
            Finally
                Try
                    myConn.Close()
                Catch
                End Try
            End Try
        End Sub
    					
    CATATAN: Memodifikasi koneksi SQL Server string dengan benar mencerminkan Anda lingkungan.

  3. Untuk memanggil RunSqlDemo metode, tambahkan kode berikut untuk Utama metode modul:
    RunSqlDemo()
    					
  4. Pada Berkas menu, klik Simpan semua untuk menyimpan solusi.
  5. Pada Bangun menu, klik Membangun solusi.
  6. Pada Debug menu, klik Mulai tanpa Debugging untuk menjalankan aplikasi.
  7. Saat Anda diminta untuk meminta nilai untuk terakhir nama, ketik nama O'Conner, kemudian tekan MASUKKAN.

    Anda menerima pesan yang mencakup informasi berikut:

    • Bagaimana metode FixString mengubah nama terakhir nilai.
    • Bagaimana string diubah muncul dalam SQL pernyataan.
    • Konfirmasi bahwa nilai tambah untuk database.
    Perhatikan bahwa nama terakhir diubah untuk O'' Conner. SQL Server menafsirkan dua tanda kutip tunggal berdekatan sebagai single tertanam tanda kutip.
  1. Tambahkan System.data.OleDb dan System.text rujukan namespace Module1.vb. Referensi namespace daftar akan muncul mirip dengan daftar berikut jika Anda membuat SQL Server contoh sebelumnya:
    Imports System.Data.SqlClient
    Imports System.Text
    Imports System.Data.OleDb 
    						
    The System.data.SqlClient namespace referensi ini tidak diperlukan jika Anda hanya ingin mengikuti contoh kode akses.
  2. Menambahkan metode berikut untuk Module1.vb:
        Private Sub RunAccessDemo()
            'Create a variable to hold the last name and the first name.
            Dim Fname As String = "Susan"
            Dim Lname As String
    
            Console.Write("Type Last Name (Access Sample): ")
            Lname = Console.ReadLine()
    
            'Call FixString to replace a single quotation mark with two         'adjacent single quotation marks.
            Lname = FixString(Lname, "'", "''")
            Console.WriteLine("Modified value: " & Lname)
    
            'Although the Fname variable in this sample is fine, 
            'run Replace on the variable also.
            Fname = FixString(Fname, "'", "''")
    
            'Use a StringBuilder object to build the SQL statement.
            Dim sb As New StringBuilder()
            sb.Append("INSERT INTO Employees(LastName, FirstName) Values( '")
            sb.Append(Lname)
            sb.Append("','")
            sb.Append(Fname)
            sb.Append("')")
    
            'Present the SQL statement to the console, and include the modified 
            'values.
            Console.WriteLine("SQL string: " & sb.ToString())
    
            'Create the connection string.
            Dim myConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                     "Data Source=C:\MyDatabases\NWIND.MDB"
    
            Dim myConn As OleDbConnection = New OleDbConnection(myConStr)
            Dim myCmd As OleDbCommand = New OleDbCommand(sb.ToString(), myConn)
    
            Try
                'Open the connection.
                myConn.Open()
                myCmd.ExecuteNonQuery()
                Console.WriteLine("Values inserted into Employees table! (Access Sample)")
            Finally
                Try
                    myConn.Close()
                Catch
                End Try
            End Try
        End Sub
    					
    CATATAN: Memodifikasi koneksi SQL Server string dengan benar mencerminkan Anda lingkungan.

  3. Untuk memanggil RunAccessDemo metode, tambahkan kode berikut untuk Utama metode modul:
    RunAccessDemo()
    					
    CATATAN: Jika Anda mengikuti langkah-langkah untuk menjalankan sampel SQL Server sebelumnya, dan jika Anda tidak ingin menjalankan RunSqlDemo metode lagi, Anda dapat komentar keluar panggilan untuk RunSqlDemo metode di Utama metode.

  4. Pada Berkas menu, klik Simpan semua untuk menyimpan solusi.
  5. Pada Bangun menu, klik Membangun solusi.
  6. Pada Debug menu, pilih Mulai tanpa Debugging untuk menjalankan aplikasi.
  7. Saat Anda diminta untuk meminta nilai untuk nama, Ketik nama O'Conner, kemudian tekan ENTER.

    Anda menerima pesan yang mencakup informasi berikut:

    • Bagaimana FixString metode memodifikasi nilai nama terakhir.
    • Bagaimana string diubah muncul dalam SQL pernyataan.
    • Konfirmasi bahwa nilai tambah untuk database.
    Perhatikan bahwa nama terakhir diubah untuk O'' Conner. The database menafsirkan dua berdekatan satu tanda kutip sebagai tertanam tanda kutip tunggal.

    Anda dapat mengubah contoh ini sehingga tunggal tanda kutip delimiters dalam pernyataan SQL digantikan oleh ganda tanda kutip. Namun, contoh ini tidak dapat menangani situasi di mana ganda tanda kutip terkandung dalam input string.

Pemecahan Masalah

  • Jika Anda tidak menggantikan tanda kutip tunggal dengan dua berdekatan tanda kutip tunggal, Anda menerima kesalahan sintaks yang sama dengan salah satu pesan galat berikut:
    System.data.SqlClient.SQLException: Jalur 1: sintaks salah dekat 'Conner'. Tanda kutip tidak tertutup sebelum karakter string ')
    -atau-
    Unhandled pengecualian: System.data.OleDb.OleDbException: Syntax Error (hilang operator) dalam permintaan ekspresi '' O'Conner', 'Susan')'
  • Ketika Anda menggunakan akses contoh dalam artikel ini, jika Anda tekan ENTER tanpa memberikan masukan setiap saat Anda diminta, Anda akan menerima pesan galat berikut (atau yang serupa):
    LapanganTableName.FieldName tidak boleh nol-panjang string.
    Akses menafsirkan medan string kosong sebagai nol-panjang string. Galat ini terjadi apabila AllowZeroLength properti database lapangan tidak diatur ke Ya. Lihat REFERENSIbagian untuk informasi lebih lanjut.

REFERENSI

Untuk informasi tambahan tentang AllowZeroLength properti di akses, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
209098 ACC2000: Menggunakan AllowZeroLength dan diperlukan properti
Untuk dokumentasi dan contoh tentang tugas umum di ADO.NET pemrograman, lihat Website Microsoft berikut:
ADO.Pusat dukungan NET
http://support.Microsoft.com/pH/548
Untuk informasi lebih lanjut tentang cara bermigrasi dari Microsoft ActiveX Data Objects (ADO) untuk Microsoft ADO.NET, lihat Website Microsoft berikut:
Ikhtisar ADO.NET
http://MSDN.Microsoft.com/en-us/library/h43ks021.aspx

Properti

ID Artikel: 311023 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft ADO.NET 1.1
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Kata kunci: 
kbhowtomaster kbsqlclient kbsystemdata kbmt KB311023 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:311023

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com