Makale numarası: 824106 - Son Gözden Geçirme: 23 Eylül 2003 Salı - Gözden geçirme: 1.1

SORUN: "ResultSet satır veri Re-Read." ' olduğunda, JDBC ResultSet nesnesinden veri okuma hatası

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

JDBC JDBC için SQL Server 2000 sürücüsü kullanarak ResultSet bir nesne almak için kullandığı bir Java uygulaması var. Bir sütunda ResultSet okumaya çalıştığınızda aşağıdaki hata iletisini alabilirsiniz:
Java.SQL.SQLException: [Microsoft] [JDBC için SQL Server 2000 sürücüsü] ResultSet sütun 1'için bir satır veri re-read.
Not Bu hata iletisinde, sözcükleri "olabilir." sözcüğünü "olamaz." yanlış yazılmış olursunuz

Hata iletisinin başvuran bir sütun numarası ResultSet nesnenize şemada bağlıdır.

Neden

Bu hata, bir BLOB sütun (örneğin, text, ntext veya görüntü veri türlerinde) içeren ResultSet nesneleriyle oluşur. Sürücü, boyut sınırlamaları nedeniyle BLOB veri türleri içeriği önbelleğe almaz, çünkü bir BLOB sütun sırasız döndüremez.

ResultSet herhangi bir satırda, soldan sağa bir sütun okuyabilir ve her sütunun yalnızca bir kez okumalısınız. Sütunları sırasız okumaya çalışırsanız veya ResultSet sütun re-read, "Belirtiler" bölümünde açıklanan hata iletisini alabilirsiniz.
Sorunu önlemek için <a0></a0>, sipariş ResultSet sütunlarda okuyun.

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

Davranışı Yeniden Oluşturma Adımları


Sınama tablosu oluşturun

  1. Microsoft SQL Query Analyzer'ı başlatın.
  2. Query Düzenleyicisi'nde aşağıdaki SQL sorgularını yapıştırın:
    use pubs;
    create table myTable (fld1 int, fld2 varchar(20), remark text);
    insert into myTable values (1, 'Joseph', 'Text for Joseph');
    insert into myTable values (2, 'Michael', 'Text for Michael');
    insert into myTable values (3, 'Thomas', 'Text for Thomas');
    
  3. Sorgu) menüsünde, Çalıştır ' ı tıklatın.
  4. Microsoft SQL Query Analyzer'ı kapatın.

Oluşturma ve Java uygulama sınama

  1. Aşağıdaki kodu Not Defteri'ne veya seçtiğiniz bir t ext düzenleyicisine yapıştırın:
    import java.sql.*;
    import java.io.*;
    
    public class Class1
    {
    	public static void main (String[] args)
    	{
    		try
    		{
    			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver" );
    			Connection connection = DriverManager.getConnection("jdbc:microsoft:sqlserver://server:1433;databasename=pubs;SelectMethod=direct", "<UserId>","<PassWd>");
    			Statement stmt = connection.createStatement();
    			String s = "SELECT fld1, fld2, remark FROM myTable";
    			ResultSet rs = null;
    			rs = stmt.executeQuery(s);
    			System.out.println("Success! The following are the rows in this query:");
    			int fld1;
    			String fld2;
    			String remark;
    			while (rs.next())
    			{
    				remark = rs.getString("remark"); //fails if in this order
    				fld1 = rs.getInt("fld1");
    				fld2 = rs.getString("fld2");
    				//remark = rs.getString("remark"); //works fine if in this order
    				System.out.println(fld1 + ", " + fld2 + ", " + remark);
    			}
    			rs.close();
    			stmt.close();
    			connection.close();
    		}
    
    		catch(Exception e)
    		{
    			System.out.println(" Exception = " + e );
    		}
    		try
    		{
    			System.out.println("Press any key to quit...");
    			System.in.read();
    		}
    		catch (Exception e)
    		{
    
    		}
    	}
    }
  2. Sunucu yerine <userid><passwd>ve bu kod ile SQL Server, kullanıcı kimliği ve parola çalıştıran bilgisayarın adı.
  3. Bu Java kodu Class1.java kaydedin.
  4. Adım 4'te oluşturulan Java kaynak dosyasını derleyin ve sonra da uygulamayı çalıştırın. "Belirtiler" bölümü, ilk olarak getString call açıklar yapılır hata iletisini alırsınız.

Referanslar

Microsoft JDBC hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
313100  (http://support.microsoft.com/kb/313100/ ) NASıL YAPıLıR: Microsoft JDBC ile başlatıldı

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2000 Driver for JDBC
Anahtar Kelimeler: 
kbmt kberrmsg kbjdbc kbjava kbdatabase kbprb KB824106 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:824106  (http://support.microsoft.com/kb/824106/en-us/ )
Retired KB ArticleKullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.