Je travaille actuellement avec Dapper pour afficher les données du serveur SQL dans des zones de texte. Je ces deux tableaux:Utilisation de deux instructions SELECT à partir de deux tables différentes
id | fname | lname | Age
1 | cal | bla | 100
2 | vin | bla | 10
table1
id | fname | lname | Age
1 | cal | vin | 50
2 | calvin | cal | 25
table2
et mon proc stocké ressemble à ceci:
@Fname nvarchar(50)
AS
BEGIN
SELECT Fname,Lname,Age FROM table1 WHERE [email protected]
UNION
SELECT Fname,Lname,Age FROM table2 WHERE [email protected]
END
je suis insérer le premier nom sous forme dans la zone de texte et il affichera le nom et l'âge. Je veux que le tableau résultant d'inclure lname de table1 et l'âge de table2, quelque chose comme ceci:
id | fname | lname | Age
1 | calvin | bla | 50
Ma fonction C#:
public void Multi(String name)
{
try
{
using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString))
{
if (db.State != ConnectionState.Open)
db.Open();
DynamicParameters p = new DynamicParameters();
SqlCommand command = new SqlCommand("multi", con);
p.Add("@Fname", tb2.Text,
DbType.String,ParameterDirection.Input);
var multi = con.QueryMultiple("multi", p, commandType:
CommandType.StoredProcedure);
clients cls = new clients();
cls.C = multi.Read<Client>().ToList();
var cli = multi.Read<clients>().ToList();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
cls.C.Add(new Client()
{
Fname = (String)reader["Fname"],
Lname = (String)reader["Lname"],
Age = (int)reader["Age"]
});
tb2.Text = cls.C[0].Fname;
tb3.Text = cls.C[0].Lname;
tb4.Text = cls.C[0].Age.ToString();
et classe client:
class Client
{
public string Fname { get; set; }
public string Lname { get; set; }
public int Age { get; set; }
}
class clients
{
public List<Client> C = new List<Client>();
}
Je m obtenir ces erreurs:
1-Procedure or function 'multi' expects parameter '@Fname', which was not
supplied.
2-The reader has been disposed; this can happen after all data has been
consumed Object name: 'Dapper.SqlMapper+GridReader'.
3- An explicit value for the identity column in table 'CloneInfo' can only
be specified when a column list is used and IDENTITY_INSERT is ON.
je l'ai souligné le curseur sur lecteur et il dit nulle et l'exécution Abandonner une
RÉPONSE: Ive a ajouté ceci et cela fonctionne parfaitement:
DynamicParameters p = new DynamicParameters();
p.Add("@Fname", tb2.Text);
var multi = con.QueryMultiple("multi", p, commandType: CommandType.StoredProcedure);
clients cls = new clients();
clients cls2 = new clients();
cls.C = multi.Read<Client>().ToList();
cls2.C = multi.Read<Client>().ToList();
tb2.Text = cls.C[0].Fname;
tb3.Text = cls.C[0].Lname;
tb4.Text = cls2.C[0].Age.ToString();
if (db.State != ConnectionState.Closed)
db.Close();.C[0].Age.ToString();
Union tout? vous cherchez? –
mysql <> sqlserver – scsimon
@KannanKandasamy cela n'a pas fonctionné non plus. J'essaie d'obtenir deux enregistrements différents à partir de deux tables différentes et de les afficher sous la forme en utilisant plusieurs déclarations de sélection – Calvin