4

我是 C# 的半新手,但特别是在 C# 中使用 Sqlite,目前我有一个 SQlite DB 设置很好,因为它可以很好地与应用程序连接我正在运行 Windows 窗体应用程序,并且我已经将数据库中的表绑定到数据网格看法。

这一切都很好,我有一个函数设置来运行查询,我将 SQL 语句作为字符串传递给函数,并将它作为查询运行。

我在徘徊我该怎么做我从我知道的查询中得到结果显然它会像

private string QueryResult(string query){
    connect
    run query
    read query 
    return result
}

我见过的所有示例都使用 Sqlreader,但我似乎无法让它工作,我真的习惯于将 PHP 与 SQL 一起使用,而且这似乎比在 C# 中使用它简单得多,有人可以解释或指出我可能能够的地方吗找到一个教程或函数,您可以通过将其作为字符串传递并非常简单地返回结果来运行任何查询?我需要的结果不是数组或巨大的东西,我只想一次返回 1 个单词字符串或数字,所以我不需要任何复杂的东西。

请帮帮我,我昨晚花了大约 4 个小时阅读这些东西,但似乎没有得到任何结果。

4

4 回答 4

11

试试这个,也许它会帮助你:

public string QueryResult(string query)
{
    string result = "";
    SQLiteConnection sqlite = new SQLiteConnection("Data Source=/path/to/file.db");
    try
    {
        sqlite.Open();  //Initiate connection to the db
        SQLiteCommand cmd = sqlite.CreateCommand();
        cmd.CommandText = query;  //set the passed query
        result = cmd.ExecuteScalar().ToString();
    }
    finally
    {
        sqlite.Close();
    }
    return result;
}
于 2012-09-14T09:20:29.360 回答
3

这是我用过的一种方法......

首先,构建一个类来表示数据库中的表:-

public class Contact
    {
        public int ContactID { get; set; }
        public string Surname { get; set; }
        public string Forename { get; set; }
        public string MobileNumber { get; set; }
        public string EmailAddress { get; set; }
        public string Information { get; set; }   
    }

然后我将此数据加载到 IEnumerable 列表中:-

public List<Contact> GetContacts()
        {
            DataTable dt = new DataTable();

            OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Contacts]", Connection);
            Adapter.SelectCommand = cmd;

            Connection.Open();
            Adapter.SelectCommand.ExecuteNonQuery();
            Adapter.Fill(dt);
            Connection.Close();

            var Contacts = (from row in dt.AsEnumerable()

                            select new Contact
                            {
                                ContactID = row.Field<int>("ContactID"),
                                Surname = row.Field<string>("Surname"),
                                Forename = row.Field<string>("Forename"),
                                MobileNumber = row.Field<string>("MobileNumber"),
                                EmailAddress = row.Field<string>("EmailAddress"),
                                Information = row.Field<string>("Information")

                            }).ToList();



            return Contacts;
        }

在我的应用程序中,我创建了这个对象的一个​​实例:-

   public List<Contact> contactData;
   contactData = dc.GetContacts();

我现在有能力使用 LINQ 来操作数据:-

var Query = ConactData.Where(item=> item.ContactID == 10)
            .Select(item=> item.Surname).toString(); 

您可以使用 LINQ 查询您的数据并将其存储为列表、字符串等。

希望这可以帮助。

于 2012-09-14T09:33:35.713 回答
1

//正常逻辑

SELECT (SELECT SUM(column_name) FROM table_name WHERE condition) - (SELECT SUM(column_name) FROM table_name WHERE condition)

//实际编码示例

public void total_due()
                {
                    string query = "select (select sum(amount) from table_name where id>0 and amount>paid and [order no] like '" + textbox1.Text + "%' and [name] like '" + textbox2.Text + "%' and [date] like '" + textbox3.Text + "%' ) - (select sum(paid) from table_name where id>0 and amount>paid and [order no] like '" + textbox1.Text + "%' and [name] like '" + textbox2.Text + "%' and [date] like '" + textbox3.Text + "%' )";
                    SqlConnection con = new SqlConnection("server=server_name;Database=database_name;UID=sa;Password=password;");
                    con.Open();
                    SqlCommand cmd = new SqlCommand(query,con);
                    due.Text = cmd.ExecuteScalar().ToString();
                    con.Close();
                }
于 2015-02-11T21:24:38.523 回答
1

通常,我会做类似的事情:

string CONNECTION_STRING = "Persist Security Info=False; Integrated Security = SSPI; Initial Catalog=DATABASENAME;Data Source=SERVERIP";

string query = "IF OBJECT_ID('TABLE_NAME') IS NOT NULL SELECT * FROM TABLE_NAME";

using (SqlConnection Connection = new SqlConnection(CONNECTION_STRING))
{
    using (SqlCommand sqlCommand = new SqlCommand(query, ConnectionString))
    {
        try
        {
            Connection.Open();
            SqlDataReader queryCommandReader = sqlCommand.ExecuteReader();
            DataTable dataTable = new DataTable();
            dataTable.Load(queryCommandReader);

            if (dataTable != null)
            {
                 if (dataTable.Rows != null)
                 {
                     if (dataTable.Rows.Count > 0)
                     {
                         String rowText = "";
                         rowText += dataTable.Rows[ROW_NUM] [COLUMN_NAME];                          
                     }
                 }
            }
        }
        catch (Exception)
        {
            ...
        }
        finally
        {
               ...
        }
于 2012-09-14T09:22:39.217 回答