C# SQL Comp. sorok számolása

C# SQL Comp. sorok számolása
2011-11-12T20:00:32+01:00
2011-11-13T19:28:26+01:00
2022-11-23T17:00:40+01:00
sediqwe1
Sziasztok!
LINK
Itt kaptam egy kódtippet, amit jól müködik, addig amig van válasz, ha nincs akkor nem igazán tudok mit kezdeni a válasszal.(hiszen nincs :D)
A jelenlegi kód(itt látszik hogy próbálkoztam a ds.Tables[0].Rows.Count megszerzésével, de nem jött be mert valamiért bool - int gondom van :\

:


class sqlszamolo { const string ConnectionString = "Data Source='d.sdf';"; public sqlszamolo() { } public DataTable execute(string commandString) { SqlCeConnection connection = new SqlCeConnection(ConnectionString); connection.Open(); SqlCeCommand selectCmd = connection.CreateCommand(); selectCmd.CommandText = commandString; SqlCeDataAdapter adp = new SqlCeDataAdapter(selectCmd); DataSet ds = new DataSet(); adp.Dispose(); connection.Dispose(); connection.Close(); MessageBox.Show("Number of row(s) - " + ds.Tables[0].Rows.Count); return ds.Tables[0]; } }

Meghívás pedig:
sqlszamolo sqlszamoloEverywhere = new sqlszamolo(); . . . DataTable dt1 = sqlszamoloEverywhere.execute("select sum(id) from customer where dir_name LIKE '%" + fix + "%' ");
Mutasd a teljes hozzászólást!
Error 1 Cannot implicitly convert type 'System.Data.DataTable' to 'string'

Bocsi, elkerülte a figyelmemet a függvényed bemenetét is módosítani kell:

public DataTable execute(string commandString) helyett public String execute(string commandString)

nem megkerülni, megoldani akarom :)


Azért ma már, ha valaki házat akar építeni, nem a téglagyártással kezdi..
Mutasd a teljes hozzászólást!

  • MessageBox.Show("Number of row(s) - " + ds.Tables[0].Rows.Count); helyett MessageBox.Show("Number of row(s) - " + ds.Tables[0].Rows.Count.ToString();
    Mutasd a teljes hozzászólást!

  • return ds.Tables[0].Rows.Count.ToString();

    ugye ezzel lenne gondom, mert a messagebox nekem nem jó
    Hiba:



    Error 1 Cannot implicitly convert type 'string' to 'System.Data.DataTable'
    Mutasd a teljes hozzászólást!
  • Persze, hogy nem jó.
    Döntsd el mit szeretnél kapni, egy táblát, vagy infót?

    Itt táblát vársz:

    DataTable dt1 = sqlszamoloEverywhere.execute("select sum(id) from customer where dir_name LIKE '%" + fix + "%' ");

    Ezért nem lehet ilyen visszatérés:

    return ds.Tables[0].Rows.Count.ToString();

    Ha csak a sorok számát akarod text-ben, azt kaphatod egy string típusu változóban:

    return ds.Tables[0].Rows.Count.ToString(); . . string ws1 = sqlszamoloEverywhere.execute("select sum(id) from customer where dir_name LIKE '%" + fix + "%' ");
    Mutasd a teljes hozzászólást!
  • Jólhangzik, erre nem gondoltam :(


    string dt1 = sqlszamoloEverywhere.execute("select sum(id) from customer where dir_name LIKE '%" + fix + "%' ");

    a Class:


    class sqlszamolo { const string ConnectionString = "Data Source='d.sdf';"; public sqlszamolo() { } public DataTable execute(string commandString) { SqlCeConnection connection = new SqlCeConnection(ConnectionString); connection.Open(); SqlCeCommand selectCmd = connection.CreateCommand(); selectCmd.CommandText = commandString; SqlCeDataAdapter adp = new SqlCeDataAdapter(selectCmd); DataSet ds = new DataSet(); adp.Dispose(); connection.Dispose(); connection.Close(); return ds.Tables[0].Rows.Count.ToString(); } }


    hiba:


    Error 2 Cannot implicitly convert type 'string' to 'System.Data.DataTable'

    Error 1 Cannot implicitly convert type 'System.Data.DataTable' to 'string'
    Mutasd a teljes hozzászólást!
  • Itt mintha kimaradt volna egy sor:

    DataSet ds = new DataSet(); ??? adp.Dispose();
    hiányzik
    adp.Fill(ds);
    Mutasd a teljes hozzászólást!
  • Semmi nem változott (valóban kimaradt)
    Mutasd a teljes hozzászólást!
  • Sajnos, ismét meg kell kérdeznem, hogy miért vesződsz bitvadászós kódolással, mikor mindezt elntézheted kb. 5 sorral, s jóval több infóhoz juthatsz.
    Már a VS 2008 is kezelte az sdf-et, grafikus varázslóval kreálhatsz lekérdezéseket, az eredményt a datasource-ből csak ráhúzod a form-odra, s láthatod az adott tábla / lekérdezés tartalmát.
    Pl.
    A csatolt képhez ennyi kóddal jutottam:
    using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace wSDF { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'northwindDataSet.Products' table. You can move, or remove it, as needed. this.productsTableAdapter.Fill(this.northwindDataSet.Products); } private void productsBindingNavigatorSaveItem_Click(object sender, EventArgs e) { this.Validate(); this.productsBindingSource.EndEdit(); this.tableAdapterManager.UpdateAll(this.northwindDataSet); } } }

    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • nem megkerülni, megoldani akarom :)

    amúgy addig is ismerkedem az Express adta lehetőséggel, már legeneráltam a lekérést, de még nem nagyon értem mi hogy megy benne.
    Mutasd a teljes hozzászólást!
  • Error 1 Cannot implicitly convert type 'System.Data.DataTable' to 'string'

    Bocsi, elkerülte a figyelmemet a függvényed bemenetét is módosítani kell:

    public DataTable execute(string commandString) helyett public String execute(string commandString)

    nem megkerülni, megoldani akarom :)


    Azért ma már, ha valaki házat akar építeni, nem a téglagyártással kezdi..
    Mutasd a teljes hozzászólást!
  • Kivéve ha nem vályog házat épít az ember :)
    vagy olyan programot TÁKOL amilyet én :)
    Köszönöm! Müxik!
    Mutasd a teljes hozzászólást!
  • Szívesen!

    de még nem nagyon értem mi hogy megy benne.

    Néma gyereknek..
    Írd meg, mi nem világos (vannak itt lámpások).
    Mutasd a teljes hozzászólást!
  • Engem jobban zavar az , hogy a segítségeddel megírt kód olyan lassú mint a fene :\
    112 könyvtárat kellene megkeresnie a rendszerben.
    39900 könyvtár van az SQL táblában.
    Ez az azonosítás,
    :
    sw = sqlszamoloEverywhere.execute("select id from customer where dir_name = '" + fix + "' and film_id !='' ");

    elszüttyög vagy 1 percet a 112 könyvtáron mire rájön hogy van vagy nincs ilyen könyvtár az adatbázisban :\
    ha ez pl a 3000 könyvtárat tartalmazó mappán történik, :D a user nem fogja végig várni, az tutkó :D
    Mutasd a teljes hozzászólást!
  • Láthatnánk a customer kreációjának listáját?
    Pl.

    CREATE TABLE [dbo].[Devizak]( [DevizaID] [int] IDENTITY(1,1) NOT NULL, [Megnevezes] [nchar](20) NULL, [Azonosito] [nchar](5) NULL, [Rowvrsn] [timestamp] NULL, CONSTRAINT [PK_Devizak] PRIMARY KEY CLUSTERED ( [DevizaID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [IX_Devizak] UNIQUE NONCLUSTERED ( [Azonosito] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [IX_Devizak_1] UNIQUE NONCLUSTERED ( [Megnevezes] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
    Mutasd a teljes hozzászólást!
  • Hát annyira nem értek hozzá :\
    private void local_adatbazis_feltoltese() { const string ConnectionString = "Data Source='m.sdf';"; if (!(File.Exists("m.sdf"))) { // The database does not exist so create it SqlCeEngine engine = new SqlCeEngine(ConnectionString); engine.CreateDatabase(); // Setup a connection to the database SqlCeConnection connection = new SqlCeConnection(engine.LocalConnectionString); connection.Open(); SqlCeCommand command = connection.CreateCommand(); command.CommandText = "SELECT count(*) FROM INFORMATION_SCHEMA.TABLES " + "where TABLE_NAME = 'customer'"; int result = (System.Int32)(command.ExecuteScalar()); if (result == 0) { command.CommandText = "create table customer (id int, f_h ntext, f_e nvarchar(200), l_e nvarchar(200), l_h nvarchar(200), i nvarchar(200), i_r nvarchar(20), i_sz nvarchar(20), m1 nvarchar(10), m2 nvarchar(10), m3 nvarchar(10), l ntext, a1 nvarchar(200), a2 nvarchar(200), e nvarchar(10))"; command.ExecuteNonQuery(); myslq_connenct ftp_con3 = new myslq_connenct("SELECT id,filmeng,filmhun,leiras,link_magyar,link_angol,mufaj1,mufaj2,mufaj3,imdb_rate,imdb_szavazo,images,auto1,auto2,evszam FROM filmek where status=1 order by id;", 114); string[] s1 = ftp_con3.x1().Split(new string[] { "##" }, StringSplitOptions.None); int idd = 0; while (s1[idd] != "") { string[] s2 = s1[idd].Split(new string[] { "||||" }, StringSplitOptions.None); try { //e,l,l_p,l_e,m1,m2,m3,i_r,i_sz,i command.CommandText = "insert into customer (id,f_e,f_h,l,l_h,l_e,m1,m2,m3,i_r,i_sz,i,a1,a2,e) values (" + s2[0] + ", '" + s2[1] + "','" + s2[2] + "','" + s2[3] + "','" + s2[4] + "','" + s2[5] + "','" + s2[6] + "','" + s2[7] + "','" + s2[8] + "','" + s2[9] + "','" + s2[10] + "','" + s2[11] + "','" + s2[12] + "','" + s2[13] + "','" + s2[14] + "')"; command.ExecuteNonQuery(); } catch (Exception) { // MessageBox.Show(ex.ToString()); } idd++; } } connection.Close(); } try { SqlCeConnection connection = new SqlCeConnection(ConnectionString); connection.Open(); SqlCeCommand command = connection.CreateCommand(); command.CommandText = "select * from customer"; SqlCeDataReader dataReader = command.ExecuteReader(); SqlServerEverywhereResultSet resultSet = new SqlServerEverywhereResultSet(); if (dataReader != null) { for (int i = 0; i < dataReader.FieldCount; i++) { resultSet.columns.Add(dataReader.GetName(i)); } while (dataReader.Read()) { List<string> row = new List<string>(); for (int i = 0; i < dataReader.FieldCount; i++) { row.Add(dataReader.GetValue(i).ToString()); } resultSet.rows.Add(row); } } connection.Close(); } catch (SqlCeException ex) { MessageBox.Show(ex.Message, "Error executing SQL Statement"); }
    Mutasd a teljes hozzászólást!
  • Bocsi, de tán örökölted e kódot?
    Legalább elsődleges kulcsot tehetnél a tábládba:
    Pl.

    "create table customer (id int, helyett "CREATE TABLE Customer(ID int [IDENTITY](1, 1) PRIMARY KEY, . .
    Mutasd a teljes hozzászólást!
  • igen, 100% ban copy code :( a MYSQL - PHP vonalról jöttem :)
    Mutasd a teljes hozzászólást!
  • a MYSQL - PHP vonalról jöttem

    Ok, de primary key + index ott is van, nem?
    Mutasd a teljes hozzászólást!
  • PhpMyadminban, igen :) itt még nem sikerült a kódod elfogadhatóvá tennem, de rámegyek a témára! lehet hogy MsSQL ről inkább a MySQL vonalon maradok :)
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd