我想在C#的字符串变量或字符串数组中获取SQL结果,这是可能的吗?需要以某种方式使用SqlDataReader吗? 我非常新于C#函数等方面的工作,之前一直在PHP上工作,因此如果可以,请给出一个工作示例(如果相关的话,我已经连接并访问数据库,并插入和选择..我只是不知道如何将结果存储在字符串变量中)。
我想在C#的字符串变量或字符串数组中获取SQL结果,这是可能的吗?需要以某种方式使用SqlDataReader吗? 我非常新于C#函数等方面的工作,之前一直在PHP上工作,因此如果可以,请给出一个工作示例(如果相关的话,我已经连接并访问数据库,并插入和选择..我只是不知道如何将结果存储在字符串变量中)。
这不是历史上最好的例子,如果你从数据库中没有返回任何行,你会遇到异常,但如果你想要使用数据库中的存储过程,而不是直接从代码中运行SELECT
语句,那么这将允许您返回一个字符串:
public string StringFromDatabase()
{
SqlConnection connection = null;
try
{
var dataSet = new DataSet();
connection = new SqlConnection("Your Connection String Goes Here");
connection.Open();
var command = new SqlCommand("Your Stored Procedure Name Goes Here", connection)
{
CommandType = CommandType.StoredProcedure
};
var dataAdapter = new SqlDataAdapter { SelectCommand = command };
dataAdapter.Fill(dataSet);
return dataSet.Tables[0].Rows[0]["Item"].ToString();
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex);
}
finally
{
if (connection != null)
{
connection.Close();
}
}
}
它肯定可以被改进,但如果您想采用存储过程方法,它将为您提供一个起点。
dataSet.Tables[0].Rows.Count > 0
:) - Albus_Dalbador试一下这个:
SqlConnection con=new SqlConnection("/*connection string*/");
SqlCommand SelectCommand = new SqlCommand("SELECT email FROM table1", con);
SqlDataReader myreader;
con.Open();
myreader = SelectCommand.ExecuteReader();
List<String> lstEmails=new List<String>();
while (myreader.Read())
{
lstEmails.Add(myreader[0].ToString());
//strValue=myreader["email"].ToString();
//strValue=myreader.GetString(0);
}
con.Close();
从列表中访问电子邮件
lstEmails[0]
->第一个电子邮件
lstEmails[1]
->第二个电子邮件
...等等。
lstEmails
,可用于添加所有电子邮件。 - Sudhakar Tillapudi您可以使用 SQL 数据读取器:
string sql = "SELECT email FROM Table WHERE Field = @Parameter";
string variable;
using (var connection = new SqlConnection("Your Connection String"))
using (var command = new SqlCommand(sql, connection))
{
command.Parameters.AddWithValue("@Parameter", someValue);
connection.Open();
using (var reader = command.ExecuteReader())
{
//Check the reader has data:
if (reader.Read())
{
variable = reader.GetString(reader.GetOrdinal("Column"));
}
// If you need to use all rows returned use a loop:
while (reader.Read())
{
// Do something
}
}
}
Or you could use SqlCommand.ExecuteScalar()
string sql = "SELECT email FROM Table WHERE Field = @Parameter";
string variable;
using (var connection = new SqlConnection("Your Connection String"))
using (var command = new SqlCommand(sql, connection))
{
command.Parameters.AddWithValue("@Parameter", someValue);
connection.Open();
variable = (string)command.ExecuteScalar();
}
试试这个:
public string SaveStringSQL(string pQuery, string ConnectionString)
{
var connection = new Conexao(ConnectionString);
connection.Open();
SqlCommand command = new SqlCommand(pQuery, connection.Connection);
var SavedString = (string)command.ExecuteScalar();
connection.Close();
return SavedString;
}
ExecuteScalar
函数可以保存数据库中的任何类型数据 - 您只需要指定它。
请记住,它一次只能保存一行。
这可能对你的MySQL有所帮助
MySqlDataReader reader = mycommand.ExecuteReader();
while (reader.Read())
{
TextBox2.Text = reader.ToString();
}
对于 SQL
using (SqlCommand command = new SqlCommand("*SELECT QUERY HERE*", connection))
{
//
// Invoke ExecuteReader method.
//
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
TextBox2.Text = reader.GetString(0);
}
}
SELECT
语句吗?顺便说一下,“请给出一个可行的示例”不是一个好的提问方式。请阅读[FAQ]和[ask]。 - Soner Gönül