[英]C# SMO Select from Database
我一直絞盡腦汁試圖弄清楚如何在C#中使用SMO執行表中的SELECT並將該值返回給字符串項。
我看過很多關於如何在C#中運行SQL腳本的帖子,這不是我想要做的。 這是我到目前為止的代碼
public static void GetDealerInfo()
{
Server databaseServer = new Server(dbServer);
try
{
databaseServer.ConnectionContext.LoginSecure = dbSecure;
databaseServer.ConnectionContext.Login = dbUser;
databaseServer.ConnectionContext.Password = dbPass;
databaseServer.ConnectionContext.Connect();
sDealerName = databaseServer.ConnectionContext.ExecuteWithResults("USE DATABASE Select DataValue from TABLE where KEYField = 'DealershipName'").ToString();
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
finally
{
if (databaseServer.ConnectionContext.IsOpen)
{
databaseServer.ConnectionContext.Disconnect();
}
}
}
我還有一個名為sDealerName的字符串,這是我要拉的地方,我得到的是sDealerName = System.Data.DataSet
誰能指出我正確的方向?
更新:
這是讓它成功的代碼或至少對我有用的代碼
try
{
databaseServer.ConnectionContext.LoginSecure = dbSecure;
databaseServer.ConnectionContext.Login = dbUser;
databaseServer.ConnectionContext.Password = dbPass;
databaseServer.ConnectionContext.DatabaseName = dbDatabase;
databaseServer.ConnectionContext.Connect();
DataSet dsName = databaseServer.ConnectionContext.ExecuteWithResults("Select DataValue from ABSetup where KEYField = 'DealershipName'");
sDealerName = dsName.Tables[0].Rows[0][0].ToString();
DataSet dsNum = databaseServer.ConnectionContext.ExecuteWithResults("Select DataValue from ABSetup where KEYField = 'ABOfficeCID'");
sDealerNumber = dsNum.Tables[0].Rows[0][0].ToString();
}
您在對象實例上調用ToString(),這就是您獲得完全限定類型名稱的原因。
您要查找的值將位於DataSet
的DataTable
對象內。 再次運行您的代碼並在sDealerName行中斷。 然后使用放大鏡工具單擊它以打開數據集查看器,您將能夠從那里找出其余部分。
將您的代碼更改為:
DataSet ds = databaseServer.ConnectionContext.ExecuteWithResults("Select DataValue from TABLE where KEYField = 'DealershipName'");
“USE DATABASE;”,首先,您可能不需要它。 其次,如果你的意思是“USE MyDatabaseName;” ,在名字后用半冒號試試吧。
對你的問題更重要的是:然后做一個
Console.Writeline (ds.GetXml );
然后,您將“看到”DataSet,DataTable,DataTable中的行,用於“采集”您的標量值。
string value = string.Empty;
if(null!=ds) {
if(null!=ds.Tables) {
if(ds.Tables.Count > 0) {
if(null!=ds.Tables[0].Rows) {
if(ds.Tables[0].Rows.Count > 0) {
if(null!=ds.Tables[0].Rows[0].Columns){
if(ds.Tables[0].Rows[0].Columns.Count > 0)
{
value = ds.Tables[0].Rows[0].Columns[0].Value;
}}}}}}}
“計數”可能是“長度”,我是從記憶中走出來的。
我的代碼是從內存中未經過測試的,所以請耐心等待。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.