簡體   English   中英

C#SMO從數據庫中選擇

[英]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(),這就是您獲得完全限定類型名稱的原因。

您要查找的值將位於DataSetDataTable對象內。 再次運行您的代碼並在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM