2013-03-29 65 views
0

我在這裏有一個問題,我不能調用DNN中的存儲過程。我使用的DNN 7 [最後]。我嘗試使用NamePrefix +「reg_user」,但它似乎沒有調用過程,我想要。下面是我嘗試過的,但是達到了相同的結果。在DotNetNuke中調用sql存儲過程

SqlDataProvider.cs [DAL]

public override void AddUser(int ModuleId,string User_name,string User_password,string User_email { 
    SqlHelper.ExecuteNonQuery(ConnectionString,GetFullyQualifiedName("reg_user"),ModuleId,User_name,User_password,User_email); 
} 

FeatureController.cs [BL]

Public void AddUser(Register_user reg){ 
    if(reg._User_name.Trim() != "") 
    { 
     DataProvider.Instance().AddUser(reg.ModuleId,reg._User_name,reg.User_password,_User_email);  
    } 
} 

Register_user.cs [實體]

public class Register_user 
{ 
    public int _ModuleId{ get; set; } 
    public string _User_name{ get; set; } 
    public string _User_password{ get; set; } 
    public string _User_email{ get; set; } 
} 

view.ascx.cs [UI]

protected void btnregister_Click(object sender, EventArgs e) 
{ 

    try 
    { 
     FeatureController cntrl = new FeatureController(); 
     Register_user reg = new Register_user() 
     { 
      _ModuleId=ModuleId, 
      _User_name = txtusername.Text, 
      _User_email = txtemail.Text, 
      _User_password = txtpassword.Text 
     }; 
     cntrl.AddUser(reg); 
     } 
     catch (Exception ee) 
     { 
      lblresult.Text = ee.Message.ToString(); 
     } 
} 

錯誤:存儲過程 'dbo.DNNModule2_reg_user' 不存在。

任何幫助都非常appriciated!

回答

0

我回來瞭解決方案更新爲我問幾天前的這個問題。 對此的解決方案相當簡單。以下是我需要更改的內容。它將調用Sql數據庫而不會出現任何問題。

public override void AddUser(int ModuleId,string User_name,string User_password,string User_email { 
    SqlHelper.ExecuteNonQuery(ConnectionString,DatabaseOwner + ObjectQualifier + reg_user",ModuleId,User_name,User_password,User_email); 
} 

只要改變從GetFullyQualifiedNameDatabaseOwner + ObjectQualifier。 我這樣做是作爲優秀社區成員的一部分。所以我傾向於不回答我的問題。

Regrads,

0

我認爲你必須馬上看在你的SqlDataProvider。

private const string providerType =「data」;

private const string moduleQualifier =「Objectqualifier_」;

這是對象限定字符串,其中添加了您的SP名稱,如 Objectqualifier_SPname。 ,你必須以同樣的方式創建SP。 意思是你必須在 GetFullyQualifiedName(「SPname」)中只寫入sp名稱的最後一部分。 使用調試器檢查SP的全名。 ,然後檢查SQL Server中的原始SP名稱。

請問你提供給我你的sp名稱,如你的SQL Server和你的 * private const string moduleQualifier