为什么我的插入有效,但选择无效



所以这很奇怪。我正试图从我的C#应用程序到我的本地数据库做一个简单的选择,但它不起作用。事实上,我知道查询是正确的,而且我的连接也能工作,因为我可以进行插入。我想要的是能够将select中的数据放入DataTable中。很简单,以前做过,但现在不起作用。。。

这是我提到的两个问题:

"SELECT idUsuario 
FROM taxi.dbo.Usuario 
WHERE nombre = '" + usuario + "'"

其中CCD_ 1是数据库中存在的实际名称。这个不管用。

然而,这个有效:

USE [Taxi] 
INSERT INTO [dbo].[Usuario]([nombre], [correo], [tlf],[metodo_pago], [contrasena])
VALUES('" + usuario.nombre + "','" + usuario.correo + "','" + usuario.tlf + "','" + usuario.tarjeta  + "', '" + usuario.contrasena + "')"

我的完整代码:

public DataTable ejecutaConsultaDataTable(String consulta)
{
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
SqlCommand c = new SqlCommand(consulta, con); //Defino la consulta a realizar.
try
{
this.connection();    // Abro la conexión
da.SelectCommand = c;
da.Fill(dt);   // relleno tabla con el resultado de la consulta
this.closeConnection();
return dt;
}
catch //(Exception ex)   // Tratamiento de errores en la conexión
{
this.closeConnection();   // Cierro conexión
return null;
}
}
public int ejecutaConsulta(String consulta)
{
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand c = new SqlCommand(consulta, con); //Defino la consulta a realizar.
try
{
this.connection();    // Abro la conexión
da.SelectCommand = c;
c.ExecuteNonQuery();
this.closeConnection();
return 0;
}
catch //(Exception ex)   // Tratamiento de errores en la conexión
{
this.closeConnection();   // Cierro conexión
return -1;
}
}

这是我使用的代码:

consulta == query
con == connection

谢谢BTW:(

如果你想使用数据表,下面是如何让生活变得简单和安全:

  • 向项目中添加新的数据集文件
  • 双击打开它,右键单击曲面并选择"添加TableAdapter">
  • 通过向导,输入连接字符串,然后输入查询
    • 每当您想要SQL字符串中的某个参数时,请在参数名称前加上@,将其键入向导中,如下所示:SELECT * FROM taxi.dbo.Usuario WHERE nombre = @usuario
    • 当你有一个有参数的查询时,一定要给它起一个好名字,比如";FillByUsuario"-不要将其保留为默认值";填充";或";FillBy">
  • 完成向导

您将看到数据库表的表示形式出现,可能与表适配器(UsuarioTableAdapter(一起被称为Usuario。如果你查看表适配器的属性,你会发现它有一个InsertCommand(以及一个用于更新、删除的(,已经为你填写好了,还有参数。。VS为您编写了大量优秀的代码(如果您想查看,这些代码都在YourDataSet.Designer.cs文件中

要使用代码中的这些新东西,只需执行以下操作:

var ta = new UsuarioTableAdapter();
var dt = ta.GetDataByUsuario("hello, put a usuario here");

这就是你要做的全部

如果您想进行更改,并将其保存到数据库:

dt[0].Nombre = "John";
dt[0].Correo = "1, the street";
ta.Update(dt);

您可以向表适配器添加任意数量的查询,但它们应该与表相关。右键单击UsuarioTableAdapter,然后选择"添加查询"。添加另一个,可能是SELECT * FROM Usuario WHERE Correo LIKE @correo,称之为FillByCorreo/GetDataByCorreo。从代码中调用它,如:

var dt = ta.GetDataByCorreo("% address here %");

最新更新