Bahasa
Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
ADO.NET 2.0 memperkenalkan dukungan jenis yang ditingkatkan untuk DataSet melalui namespace System.Data.SqlTypes. Jenis dalam System.Data.SqlTypes dirancang untuk menyediakan jenis data dengan semantik dan presisi yang sama dengan jenis data dalam database SQL Server. Setiap jenis data dalam System.Data.SqlTypes memiliki jenis data yang setara di SQL Server, dengan representasi data yang mendasar yang sama.
Menggunakan System.Data.SqlTypes langsung dalam DataSet memberikan beberapa manfaat saat bekerja dengan jenis data SQL Server. System.Data.SqlTypes mendukung semantik yang sama dengan jenis data asli SQL Server. Menentukan salah satu System.Data.SqlTypes dalam definisi DataColumn menghilangkan hilangnya presisi yang dapat terjadi saat mengonversi jenis data desimal atau numerik ke salah satu jenis data runtime bahasa umum (CLR).
Contoh
Contoh berikut membuat objek DataTable, secara eksplisit menentukan jenis data DataColumn dengan menggunakan System.Data.SqlTypes alih-alih jenis CLR. Kode mengisi DataTable dengan data dari tabel Sales.SalesOrderDetail dalam database AdventureWorks di SQL Server. Output yang ditampilkan di jendela konsol menunjukkan jenis data setiap kolom, dan nilai yang diambil dari SQL Server.
static void GetSqlTypesAW(string connectionString)
{
// Create a DataTable and specify a SqlType
// for each column.
DataTable table = new();
table.Columns.Add("SalesOrderID", typeof(SqlInt32));
table.Columns.Add("UnitPrice", typeof(SqlMoney));
table.Columns.Add("LineTotal", typeof(SqlDecimal));
table.Columns.Add("ModifiedDate", typeof(SqlDateTime));
// Open a connection to SQL Server and fill the DataTable
// with data from the Sales.SalesOrderDetail table
// in the AdventureWorks sample database.
using (SqlConnection connection = new(connectionString))
{
const string queryString =
"SELECT TOP 5 SalesOrderID, UnitPrice, LineTotal, ModifiedDate "
+ "FROM Sales.SalesOrderDetail WHERE LineTotal < @LineTotal";
// Create the SqlCommand.
SqlCommand command = new(queryString, connection);
// Create the SqlParameter and assign a value.
SqlParameter parameter =
new("@LineTotal", SqlDbType.Decimal)
{
Value = 1.5
};
command.Parameters.Add(parameter);
// Open the connection and load the data.
connection.Open();
SqlDataReader reader =
command.ExecuteReader(CommandBehavior.CloseConnection);
table.Load(reader);
// Close the SqlDataReader.
reader.Close();
}
// Display the SqlType of each column.
Console.WriteLine("Data Types:");
foreach (DataColumn column in table.Columns)
{
Console.WriteLine($" {column.ColumnName} -- {column.DataType.UnderlyingSystemType}");
}
// Display the value for each row.
Console.WriteLine("Values:");
foreach (DataRow row in table.Rows)
{
Console.Write(" {0}, ", row["SalesOrderID"]);
Console.Write(" {0}, ", row["UnitPrice"]);
Console.Write(" {0}, ", row["LineTotal"]);
Console.Write(" {0} ", row["ModifiedDate"]);
Console.WriteLine();
}
}
Private Sub GetSqlTypesAW(ByVal connectionString As String)
' Create a DataTable and specify the
' SqlType for each column.
Dim table As New DataTable()
Dim icolumnolumn As DataColumn = _
table.Columns.Add("SalesOrderID", GetType(SqlInt32))
Dim priceColumn As DataColumn = _
table.Columns.Add("UnitPrice", GetType(SqlMoney))
Dim totalColumn As DataColumn = _
table.Columns.Add("LineTotal", GetType(SqlDecimal))
Dim columnModifiedDate As DataColumn = _
table.Columns.Add("ModifiedDate", GetType(SqlDateTime))
' Open a connection to SQL Server and fill the DataTable
' with data from the Sales.SalesOrderDetail table
' in the AdventureWorks sample database.
Using connection As New SqlConnection(connectionString)
Dim queryString As String = _
"SELECT TOP 5 SalesOrderID, UnitPrice, LineTotal, ModifiedDate " _
& "FROM Sales.SalesOrderDetail WHERE LineTotal < @LineTotal"
' Create the SqlCommand.
Dim command As SqlCommand = New SqlCommand(queryString, connection)
' Create the SqlParameter and assign a value.
Dim parameter As SqlParameter = _
New SqlParameter("@LineTotal", SqlDbType.Decimal)
parameter.Value = 1.5
command.Parameters.Add(parameter)
' Open the connection and load the data.
connection.Open()
Dim reader As SqlDataReader = _
command.ExecuteReader(CommandBehavior.CloseConnection)
table.Load(reader)
' Close the SqlDataReader
reader.Close()
End Using
' Display the SqlType of each column.
Dim column As DataColumn
Console.WriteLine("Data Types:")
For Each column In table.Columns
Console.WriteLine(" {0} -- {1}", _
column.ColumnName, column.DataType.UnderlyingSystemType)
Next column
' Display the value for each row.
Dim row As DataRow
Console.WriteLine("Values:")
For Each row In table.Rows
Console.Write(" {0}, ", row("SalesOrderID"))
Console.Write(" {0}, ", row("UnitPrice"))
Console.Write(" {0}, ", row("LineTotal"))
Console.Write(" {0} ", row("ModifiedDate"))
Console.WriteLine()
Next row
End Sub