4

私はC#を初めて使用しますが、特にC#内でSqliteを使用しています。現在、アプリケーションとの接続が良好で、データベース内のテーブルをデータグリッドにバインドしているという点で、SQliteDBのセットアップは正常です。見る。

これはすべて問題ありません。クエリを実行するための関数設定があり、SQLステートメントを文字列として関数に渡し、クエリとして実行します。

私はどうやって私が知っているクエリから結果を返すのか迷っていましたそれは明らかに次のようなものになるでしょう

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

私が見たすべての例はSqlreaderを使用していますが、それを機能させることができないようです。私はSQLでPHPを使用することに本当に慣れており、C#で使用するよりもはるかに簡単なようです。文字列として渡して結果を非常に簡単に返すことでクエリを実行できるtutuorialまたは関数を見つけるには?必要な結果は、配列や巨大なものではなく、一度に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

通常、私は次のようなことをします。

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 に答える
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 に答える